首页 > 解决方案 > Tensorflow:如何将冻结的模型转换为保存的模型

问题描述

我正在尝试从这里转换这个 Frozen 模型(扩展名 .pb):

https://www.dropbox.com/s/bb7n78hq5owyjr0/tf_model_pb.zip?dl=0

已保存的模型

可能吗?你能分享将这个 pb 文件转换为保存模型的确切代码吗?

标签: pythonpython-3.xtensorflowmodel

解决方案


首先回答,这样做是可能的,但很麻烦,因为在将 ckpt 冻结为 pb 模型期间,SavedModel 所需的所有变量都会转换为常量或其他类型。在 tf 中,将 'Constant' 恢复为 'Variable' 有点复杂,例如:

# node is a constant
node = tf.Constant([1, 2])
output_node = tf.NodeDef()
output_node.op = "Variable"
output_node.name = node.name
dtype = node.attr["dtype"].type
data = node.attr["value"].tensor
output_node.attr["dtype"].type = dtype
output_node.attr["value"].CopyFrom(tf.AttrValue(tensor=data))

有关将常量节点转换为其他类型的详细信息,请参阅此答案。

因此,从 ckpt 文件中冻结 SavedModel是最简单、最直接的方法。


推荐阅读