使用openvino2tensorflow转换模型时保存JSON报错:无法序列化module对象
解决OpenVINO转TensorFlow时
model.to_json()的pickle错误 临时拆分执行方案
- 先单独生成SavedModel,跳过JSON和权重的同步导出:
openvino2tensorflow --model_path model.xml --output_saved_model - 用TensorFlow原生API手动导出JSON和权重:
- 加载生成的SavedModel:
import tensorflow as tf loaded_model = tf.keras.models.load_model("saved_model") - 导出模型结构为JSON:
json_config = loaded_model.to_json() with open("model_config.json", "w") as f: f.write(json_config) - 导出权重文件:
loaded_model.save_weights("model_weights.h5")
- 加载生成的SavedModel:
排查并修复根本问题
- 检查模型是否包含自定义算子:OpenVINO模型中的部分自定义操作转成TensorFlow后,可能携带无法序列化的模块引用,导致
to_json()失败。 - 升级工具到最新版本:工具本身可能已修复这类序列化bug,执行升级命令:
pip install --upgrade openvino2tensorflow - 替换自定义层:若模型存在无法序列化的自定义层,加载SavedModel后手动替换为TensorFlow原生等价层,再执行导出操作。
替代的模型结构导出方式
如果JSON导出始终有问题,可以导出TensorFlow的pb文本格式查看模型结构:
import tensorflow as tf loaded_model = tf.keras.models.load_model("saved_model") tf.train.write_graph(loaded_model.graph, ".", "model_graph.pbtxt", as_text=True)
内容的提问来源于stack exchange,提问作者Alimagadov K.
相关产品推荐
相关产品推荐

