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_constantsfreeze_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 文件相同?的主要内容,如果未能解决你的问题,请参考以下文章

Keras ConvLSTM2D:保存模型时出现ValueError

ppwjs之前端达人

新版测试中

初一下期中试卷

c++理解协程05

Access中VBA中excel文件中的VLookup