我正在使用卷积神经网络,开始运行它后,我得到了我的问题中所述的错误:
OperatorNotAllowedInGraphError:在图形执行中不允许将tf.Tensor
用作Python bool
。使用急切执行或使用@ tf.function装饰此功能。
回溯(最近通话最近一次):
文件“ /home/CNN1_FOLD1.py”,第452行,在 main_dense(0.1,DenseNet,error_anal = True,depth = depth)
文件“ /home/CNN1_FOLD1.py”,第440行,位于main_dense中 火车(型号,x_train,y_train,x_val,y_val,历元列表= [500、5000、300],名称= model_name,learning_rate = learning_rate)
火车上的文件“ /home/CNN1_FOLD1.py”,第320行 'AUC'])
文件 “ /home/.local/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py”, 第75行,在symbolic_fn_wrapper中 返回func(* args,** kwargs)
文件 “ /home/.local/lib/python3.7/site-packages/keras/engine/training.py”, 第222行,在编译中 masks = masks)
文件 “ /home/.local/lib/python3.7/site-packages/keras/engine/training.py”, _handle_metrics中的第871行 self._per_output_metrics [i],目标,输出,output_mask)
文件 “ /home/.local/lib/python3.7/site-packages/keras/engine/training.py”, _handle_per_output_metrics中的第842行 metric_fn,y_true,y_pred,weights = weights,mask = mask)
文件 “ /home/.local/lib/python3.7/site-packages/keras/engine/training_utils.py”, 第1033行,在call_metric_function中 update_ops = metric_fn.update_state(y_true,y_pred,sample_weight = weights)
文件 “ /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行,处于update_state 匹配= self._fn(y_true,y_pred,** self._fn_kwargs)
文件 “ /home/.local/lib/python3.7/site-packages/keras/metrics.py”, 第1421行,在 init 中 阈值,default_threshold = default_threshold)
文件 “ /home/.local/lib/python3.7/site-packages/keras/utils/metrics_utils.py”, 第107行,位于parse_init_thresholds中 assert_thresholds_range(to_list(thresholds))
文件 “ /home/.local/lib/python3.7/site-packages/keras/utils/metrics_utils.py”, 第98行,在assert_thresholds_range中 invalid_thresholds = [如果t为None或t <0或t> 1,则t为阈值中t的t]
文件 “ /home/.local/lib/python3.7/site-packages/keras/utils/metrics_utils.py”, 98行,在 invalid_thresholds = [如果t为None或t <0或t> 1,则t为阈值中t的t]
文件 “ /home/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py”, 第765行,在 bool 中 self._disallow_bool_casting()
文件 “ /home/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py”, _disallow_bool_casting中的第534行 self._disallow_in_graph_mode(“使用
tf.Tensor
作为Pythonbool
”)文件 “ /home/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py”, 第523行,在_disallow_in_graph_mode中 “带有@ tf.function的此函数。”。format(task))
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'])
或者:
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy',
tf.keras.metrics.Precision(),
tf.keras.metrics.Recall(),
'AUC'])
两个都不起作用,给了我错误。
我该怎么做才能解决这个问题?
谢谢!
答案 0 :(得分:1)
我也有类似的问题。由于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()])
希望这会有所帮助:)