我一直在尝试Tensorflow 2 alpha,我一直在尝试冻结模型并将其导出到.pb graphdef文件。
在Tensorflow 1中,我可以做这样的事情:
# Freeze the graph.
frozen_graph_def = tf.graph_util.convert_variables_to_constants(
sess,
sess.graph_def,
output_node_names)
# Save the frozen graph to .pb file.
with open('model.pb', 'wb') as f:
f.write(frozen_graph_def.SerializeToString())
但是,由于convert_variables_to_constants被删除并且不鼓励使用会话,因此这似乎不再可行。
我看了看,发现有冻结图工具 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py适用于SavedModel导出。
是否仍可以在Python中完成某些操作,或者我现在打算切换并使用此工具?
答案 0 :(得分:1)
从tensorflow1.x迁移到tensoflow2.0 beta时,我也遇到了同样的问题。 此问题可以通过两种方法解决:
tf_upgrade_v2-输入文件your_tf1_script_file-输出文件已转换_tf2_file
您尝试使用上述命令将tensorflow1.x脚本更改为tensorflow2.0,它将解决所有问题。
此外,您可以重命名方法(通过参考文档进行手动操作) 将'tf.graph_util.convert_variables_to_constants'重命名为'tf.compat.v1.graph_util.convert_variables_to_constants'
度量问题是tensorflow2.0中的许多语法和功能已更改,请尝试参考tensoflow2.0文档或使用Google的tf_upgrade_v2脚本
答案 1 :(得分:1)
不知道您是否已经看到过Tensorflow 2.0问题,但是此响应似乎是一种解决方法:
https://github.com/tensorflow/tensorflow/issues/29253#issuecomment-530782763
注意:这不适用于我的nlp模型,但也许对您有用。建议的解决方法是在TF 2.0环境中使用@Autowire
。然后使用TF 1.14创建新环境,并在TF 1.14 env中执行以下所有步骤。建立模型model.save_weights('weights.h5')
,然后使用model = create_model()
将权重重新加载到模型中。然后使用model.load_weights('weights.h5')
保存整个模型。如果您成功完成了上述步骤,请按照链接中的其余步骤操作以使用Frozen_graph。