首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法将TensorFlow (Keras)模型转换为ONNX

无法将TensorFlow (Keras)模型转换为ONNX
EN

Stack Overflow用户
提问于 2021-09-16 09:38:47
回答 1查看 322关注 1票数 1

我试图将保存的TensorFlow模型转换为ONNX格式,但得到以下错误。

代码语言:javascript
复制
in _load_nodes
    slot_variable = optimizer_object.add_slot(
AttributeError: '_UserObject' object has no attribute 'add_slot'

我使用Keras (2.6)用model.save(os.path.join("models", 'modelData'))保存模型。然后,我使用python -m tf2onnx.convert --saved-model modelData --output model.onnx转换模型。

使用keras2onnx对我不起作用,因为这个库太旧了(而且他们的存储库重定向到tf2onnx )。

我尝试使用python -m tf2onnx.convert --checkpoint checkpoint/keras_metadata.pb --output model.onnx --inputs input0:0,input1:0 --outputs output0:0从检查点文件进行转换,但得到以下错误。

代码语言:javascript
复制
    saver = tf_import_meta_graph(model_path, clear_devices=True)
  File "####\anaconda3\envs\##\lib\site-packages\tensorflow\python\training\saver.py", line 1465, in import_meta_graph
    return _import_meta_graph_with_return_elements(meta_graph_or_file,
  File "####\anaconda3\envs\##\lib\site-packages\tensorflow\python\training\saver.py", line 1481, in _import_meta_graph_with_return_elements
    meta_graph_def = meta_graph.read_meta_graph_file(meta_graph_or_file)
  File "####\anaconda3\envs\##\lib\site-packages\tensorflow\python\framework\meta_graph.py", line 643, in read_meta_graph_file
    text_format.Merge(file_content.decode("utf-8"), meta_graph_def)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 1: invalid start byte

在保存模型之前,是否需要对模型做一些特殊的操作?这会不会是某个版本不匹配?任何反馈都会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-09-16 11:43:55

我通过在训练后立即转换模型解决了这个问题。我使用了下面这段代码。

代码语言:javascript
复制
(onnx_model_proto, storage) = tf2onnx.convert.from_keras(model)
with open(os.path.join("models", 'modelData.onnx'), "wb") as f:
    f.write(onnx_model_proto.SerializeToString())

但是,这并不能解决保存的模型的转换问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69205976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档