在 Tensorflow 2 中导出冻结图 .pb 文件
Exporting a frozen graph .pb file in Tensorflow 2
我一直在试用 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 已被删除并且不鼓励使用会话。
我看了看,发现有freeze graph util
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py 适用于 SavedModel 导出。
有什么方法可以在 Python 内完成,还是我打算现在切换并使用此工具?
我在从 tensorflow1.x 迁移到 tensoflow2.0 beta 时也遇到了同样的问题。
这个问题可以通过两种方法解决:
- 第一步是去tensflow2.0文档搜索你用过的方法,修改每一行的语法&
- 使用 google 的 tf_ugrade_v2 脚本
tf_upgrade_v2 --infile your_tf1_script_file --outfile converted_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 脚本
不确定您是否看到过这个 Tensorflow 2.0 问题,但这个回复似乎是一个解决方法:
https://github.com/tensorflow/tensorflow/issues/29253#issuecomment-530782763
注意:这对我的 nlp 模型不起作用,但也许对你有用。建议的解决方法是在 TF 2.0 环境中使用 model.save_weights('weights.h5')
。然后使用 TF 1.14 创建新环境并在 TF 1.14 环境中执行以下所有步骤。构建您的模型 model = create_model()
并使用 model.load_weights('weights.h5')
将权重加载回您的模型。然后使用 model.save('final_model.h5')
保存整个模型。如果您成功完成上述步骤,请按照 link 中的其余步骤使用 freeze_graph.
我一直在试用 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 已被删除并且不鼓励使用会话。
我看了看,发现有freeze graph util https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py 适用于 SavedModel 导出。
有什么方法可以在 Python 内完成,还是我打算现在切换并使用此工具?
我在从 tensorflow1.x 迁移到 tensoflow2.0 beta 时也遇到了同样的问题。 这个问题可以通过两种方法解决:
- 第一步是去tensflow2.0文档搜索你用过的方法,修改每一行的语法&
- 使用 google 的 tf_ugrade_v2 脚本
tf_upgrade_v2 --infile your_tf1_script_file --outfile converted_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 脚本
不确定您是否看到过这个 Tensorflow 2.0 问题,但这个回复似乎是一个解决方法:
https://github.com/tensorflow/tensorflow/issues/29253#issuecomment-530782763
注意:这对我的 nlp 模型不起作用,但也许对你有用。建议的解决方法是在 TF 2.0 环境中使用 model.save_weights('weights.h5')
。然后使用 TF 1.14 创建新环境并在 TF 1.14 环境中执行以下所有步骤。构建您的模型 model = create_model()
并使用 model.load_weights('weights.h5')
将权重加载回您的模型。然后使用 model.save('final_model.h5')
保存整个模型。如果您成功完成上述步骤,请按照 link 中的其余步骤使用 freeze_graph.