OperatorNotAllowedInGraphError:在图形执行中不允许将'tf.Tensor'用作Python'bool'。向编译函数添加度量
我正在使用一个卷积神经网络,在我开始运行它之后,我得到问题中所述的错误: OperatorNotAllowedInGraphError:在图形执行中不允许将OperatorNotAllowedInGraphError:在图形执行中不允许将'tf.Tensor'用作Python'bool'。向编译函数添加度量,python,python-3.x,tensorflow,keras,Python,Python 3.x,Tensorflow,Keras,我正在使用一个卷积神经网络,在我开始运行它之后,我得到问题中所述的错误: OperatorNotAllowedInGraphError:在图形执行中不允许将tf.Tensor用作Pythonbool。使用渴望执行或用@tf.function修饰此函数 回溯(最近一次呼叫最后一次): 文件“/home/CNN1_FOLD1.py”,第452行,在 主密度(0.1,DenseNet,误差分析=真,深度=深度) 文件“/home/CNN1_FOLD1.py”,第440行,主目录 列车(型号,x_列车,
tf.Tensor
用作Pythonbool
。使用渴望执行或用@tf.function修饰此函数
回溯(最近一次呼叫最后一次):
文件“/home/CNN1_FOLD1.py”,第452行,在
主密度(0.1,DenseNet,误差分析=真,深度=深度)
文件“/home/CNN1_FOLD1.py”,第440行,主目录
列车(型号,x_列车,y_列车,x_值,y_值,时代列表=[500,5000,300],名称=型号名称,学习率=学习率)
文件“/home/CNN1_FOLD1.py”,第320行,列车中
“AUC”])
文件
“/home/.local/lib/python3.7/site packages/keras/backend/tensorflow_backend.py”,
第75行,符号包装
返回函数(*args,**kwargs)
文件
“/home/.local/lib/python3.7/site packages/keras/engine/training.py”,
第222行,在编译中
面具=面具)
文件
“/home/.local/lib/python3.7/site packages/keras/engine/training.py”,
第871行,in _handle _度量
自我。\每输出\度量[i],目标,输出,输出\掩码)
文件
“/home/.local/lib/python3.7/site packages/keras/engine/training.py”,
第842行,输入/处理/输出度量
度量值(fn,y_真,y_pred,权重=权重,掩码=掩码)
文件
“/home/.local/lib/python3.7/site packages/keras/engine/training_utils.py”,
第1033行,调用度量函数
更新操作=度量值。更新状态(y正确,y预测,样本重量=重量)
文件
“/home/.local/lib/python3.7/site packages/keras/utils/metrics_utils.py”,
第42行,已装饰
update_op=update_state_fn(*args,**kwargs)
文件
“/home/.local/lib/python3.7/site packages/keras/metrics.py”,
第318行,处于更新_状态
匹配=self.\u fn(y\u true,y\u pred,**self.\u fn\u kwargs)
文件
“/home/.local/lib/python3.7/site packages/keras/metrics.py”,
第1421行,在init
阈值,默认\u阈值=默认\u阈值)
文件
“/home/.local/lib/python3.7/site packages/keras/utils/metrics_utils.py”,
第107行,在parse_init_阈值中
断言\u阈值\u范围(到\u列表(阈值))
文件
“/home/.local/lib/python3.7/site packages/keras/utils/metrics_utils.py”,
第98行,在断言阈值范围内
无效的_阈值=[t表示阈值中的t,如果t为无或t<0或t>1]
文件
“/home/.local/lib/python3.7/site packages/keras/utils/metrics_utils.py”,
第98行,输入
无效的_阈值=[t表示阈值中的t,如果t为无或t<0或t>1]
文件
“/home/.local/lib/python3.7/site packages/tensorflow_core/python/framework/ops.py”,
第765行,在bool
self.\u不允许\u bool\u铸造()
文件
“/home/.local/lib/python3.7/site packages/tensorflow_core/python/framework/ops.py”,
第534行,不允许铸造
self.\u不允许在图模式下(“使用tf.Tensor
作为Pythonbool
”)
文件
“/home/.local/lib/python3.7/site packages/tensorflow_core/python/framework/ops.py”,
第523行,在“禁止”模式下
“此函数带有@tf.function.”.format(任务))
OperatorNotAllowedInGraphError:使用tf.Tensor
作为Pythonbool
在图形执行中不允许。使用急切的执行或装饰
此函数带有@tf.function
我知道这与我的指标有关。我最初运行它,如下所示:
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'])
但我想添加更多指标,所以我将其更改为:
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy',
'Precision',
'Recall',
'AUC'])
或:
两者都不起作用,给了我错误
我能做些什么来解决这个问题
谢谢大家! 我也有类似的问题。由于TensorFlow升级到2.x,要使用keras API度量,您应该实例化所有这些度量,以便像这样编译:
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=[tf.keras.metrics.Accuracy(),
tf.keras.metrics.Precision(),
tf.keras.metrics.Recall(),
tf.keras.metrics.AUC()])
希望这有帮助:)
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=[tf.keras.metrics.Accuracy(),
tf.keras.metrics.Precision(),
tf.keras.metrics.Recall(),
tf.keras.metrics.AUC()])