keras.models.save_model 中的 saved_model.pb 是不是与 tensorflow freeze_graph 输出 .pb 文件相同?
Posted
技术标签:
【中文标题】keras.models.save_model 中的 saved_model.pb 是不是与 tensorflow freeze_graph 输出 .pb 文件相同?【英文标题】:Is saved_model.pb from keras.models.save_model the same with tensorflow freeze_graph output .pb file?keras.models.save_model 中的 saved_model.pb 是否与 tensorflow freeze_graph 输出 .pb 文件相同? 【发布时间】:2020-11-26 13:56:40 【问题描述】:在keras中训练模型后,我曾经申请tf.compat.v1.graph_util.convert_variables_to_constants
或freeze_graph.py
冻结模型并输出.pb文件。像这样:
output_graph_def = tf.compat.v1.graph_util.convert_variables_to_constants(sess, input_graph_def, output_node_names)
with tf.gfile.GFile('model.pb', "wb") as f:
f.write(output_graph_def.SerializeToString())
最近,我发现tf.compat.v1.graph_util.convert_variables_to_constants
被标记为:Warning: THIS FUNCTION IS DEPRECATED
。
所以我正在寻找生成.pb
文件的更新方法。我发现这个:keras.models.save_model()
保存模型和输出目录包含:
资产 saved_model.pb 变量
我不确定这个saved_model.pb
是否与tf.compat.v1.graph_util.convert_variables_to_constants
的输出.pb
文件相同?
如果没有,有人可以推荐一种更好的方法来获取冻结模型 (.pb) 文件吗?
谢谢。
【问题讨论】:
【参考方案1】:我已经确认它们不是同一个 .pb 文件。如果你加载并运行 SavedModel 格式,你会得到错误:Data loss: Can't parse testmodel/saved_model.pb as binary proto
【讨论】:
以上是关于keras.models.save_model 中的 saved_model.pb 是不是与 tensorflow freeze_graph 输出 .pb 文件相同?的主要内容,如果未能解决你的问题,请参考以下文章