keras2onnx转换时出现AttributeError: ‘KerasTensor‘ object has no attribute ‘graph’错误

【问题】
keras2onnx转换时出现AttributeError: ‘KerasTensor’ object has no attribute 'graph’错误

  File "D:\conda\lib\site-packages\keras2onnx\_parser_tf.py", line 304, in build_layer_output_from_model
    graph = model.outputs[0].graph
  AttributeError: 'KerasTensor' object has no attribute 'graph'

【解决方案】
(1) 安装tf2onnx:

pip install tf2onnx

(2)将onnx模型保存 tf 格式:

model = models.load_model("model.h5")
tf.saved_model.save(model, "tmp_model")

此时在项目目录下会生成一个 tmp_model 的文件夹

(3)在控制台用如下命令完成转换:

python -m tf2onnx.convert --saved-model .\tmp_model\ --output "model.onnx"

问题得已解决。

转换时,一定要注意算子版本,可以通过 --opset 参数来指定版本,默认是9。 若使用不合适的版本,可能转换出错(这个还好,会报bug),以及推理结果不符合预期的情况,算子版本参阅 https://github.com/onnx/onnx/blob/master/docs/Operators.md

【参考链接】
https://stackoverflow.com/questions/66560370/why-keras2onnx-convert-keras-function-keeps-getting-me-error-kerastensor-ob

你可能感兴趣的:(深度学习,tensorflow,onnx,keras)