错误:不允许将“tf.Tensor”用作Python“bool”:AutoGraph未转换此函数
我对keras和深度学习很陌生。我想使用一个自定义损失函数作为我的神经网络的损失函数,但当我使用它时,我得到了以下错误:Operator Notallowedingrapherror:使用错误:不允许将“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
tf。不允许将Tensor
用作Pythonbool
: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