在 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 时也遇到了同样的问题。 这个问题可以通过两种方法解决:

  1. 第一步是去tensflow2.0文档搜索你用过的方法,修改每一行的语法&
  2. 使用 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.