Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:不允许将“tf.Tensor”用作Python“bool”:AutoGraph未转换此函数_Python_Tensorflow_Keras - Fatal编程技术网

错误:不允许将“tf.Tensor”用作Python“bool”:AutoGraph未转换此函数

错误:不允许将“tf.Tensor”用作Python“bool”:AutoGraph未转换此函数,python,tensorflow,keras,Python,Tensorflow,Keras,我对keras和深度学习很陌生。我想使用一个自定义损失函数作为我的神经网络的损失函数,但当我使用它时,我得到了以下错误:Operator Notallowedingrapherror:使用tf。不允许将Tensor用作Pythonbool:AutoGraph没有转换此函数。这可能表示您正试图使用不受支持的功能 这就是功能: def task_based_loss1 (y_true, y_pred): e = 2 s = 50 loss = s*max(0, y_pred - y_tr

我对keras和深度学习很陌生。我想使用一个自定义损失函数作为我的神经网络的损失函数,但当我使用它时,我得到了以下错误:Operator Notallowedingrapherror:使用
tf。不允许将Tensor
用作Python
bool
:AutoGraph没有转换此函数。这可能表示您正试图使用不受支持的功能

这就是功能:

def task_based_loss1 (y_true, y_pred):
  e = 2
  s = 50
  loss = s*max(0, y_pred - y_true) + e*max(0, y_true - y_pred) + (y_pred - y_true)**2
  return loss
我很确定我写这篇文章的方式有错误。有人能帮我吗? 多谢各位

编辑:这是全部错误

OperatorNotAllowedInGraphError            Traceback (most recent call last)
<ipython-input-222-69cf216e168c> in <module>()
      6             # callbacks=[callback],
      7             verbose = verbose,
----> 8             epochs = epochs)

9 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
    975           except Exception as e:  # pylint:disable=broad-except
    976             if hasattr(e, "ag_error_metadata"):
--> 977               raise e.ag_error_metadata.to_exception(e)
    978             else:
    979               raise

OperatorNotAllowedInGraphError: in user code:

    /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:805 train_function  *
        return step_function(self, iterator)
    <ipython-input-221-cf6b0f250262>:4 task_based_loss1  *
        loss = s*max(0, y_pred - y_true) + e*max(0, y_true - y_pred) + tf.square(y_pred - y_true)
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py:885 __bool__  **
        self._disallow_bool_casting()
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py:489 _disallow_bool_casting
        "using a `tf.Tensor` as a Python `bool`")
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py:476 _disallow_when_autograph_enabled
        " indicate you are trying to use an unsupported feature.".format(task))

    OperatorNotAllowedInGraphError: using a `tf.Tensor` as a Python `bool` is not allowed: AutoGraph did convert this function. This might indicate you are trying to use an unsupported feature.
运算符不允许Ingrapherror回溯(最近一次调用)
在()
6#回调=[callback],
7详细=详细,
---->8个时代=时代)
9帧
/包装器中的usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py(*args,**kwargs)
975例外情况为e:#pylint:disable=broad except
976如果hasattr(e,“AGU错误元数据”):
-->977将e.ag\u错误\u元数据引发到\u异常(e)
978其他:
979提高
OperatorNotAllowedInGraphError:在用户代码中:
/usr/local/lib/python3.7/dist包/tensorflow/python/keras/engine/training.py:805 train_函数*
返回步骤_函数(self、迭代器)
:4基于任务的损失1*
损耗=s*max(0,y_pred-y_true)+e*max(0,y_true-y_pred)+tf.平方(y_pred-y_true)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py:885**
self.\u不允许\u bool\u铸造()
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py:489 _disallow_bool_casting
“将`tf.Tensor`用作Python`bool`”)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py:476当启用自动签名时不允许
“表示您正试图使用不受支持的功能。”。格式(任务))
OperatorNotAllowedInGraphError:不允许将'tf.Tensor'用作Python'bool':AutoGraph未转换此函数。这可能表示您正试图使用不受支持的功能。

到底哪一行给出了错误?当我尝试拟合模型时,会出现错误:model.compile(loss=task\u-based\u loss1,optimizer='adam')model.fit([train\u xw[192:],train\u xl],train\u yl,batch\u size=batch\u size,verbose=verbose,epochs=epochs)你不能使用
max
(内置python函数)在张量上。改为使用
tf.reduce\u max
。非常感谢@xdurch0,但现在它给了我另一个错误:TypeError:传递给参数“reduce\u index”的值的数据类型float32不在允许值列表中:int32,int64