根据到目前为止的经验,有几种不同的方法可以将TensorFlow图转储到文件中,然后再将其加载到另一个程序中,但是我无法找到关于它们如何工作的清晰示例/信息。我已经知道的是:
- 使用a将模型的变量保存到检查点文件(.ckpt)中,
tf.train.Saver()
并在以后还原它们(源) - 将模型保存到.pb文件,然后使用
tf.train.write_graph()
和tf.import_graph_def()
(source)将其加载回 - 从.pb文件加载模型,对其进行重新训练,然后使用Bazel将其转储到新的.pb文件中(源)
- 冻结图形以将图形和权重保存在一起(源)
- 使用
as_graph_def()
保存模型,并为权重/变量,它们映射到常数(源)
但是,我无法清除有关这些不同方法的几个问题:
- 关于检查点文件,它们仅保存模型的训练权重吗?是否可以将检查点文件加载到新程序中并用于运行模型,还是仅将它们用作在特定时间/阶段将权重保存在模型中的方法?
- 关于
tf.train.write_graph()
,权重/变量也被保存吗? - 关于Bazel,它只能保存到.pb文件中或从中加载以进行重新训练吗?是否有一个简单的Bazel命令只是将图形转储到.pb中?
- 关于冻结,是否可以使用来加载冻结图
tf.import_graph_def()
? - TensorFlow的Android演示从.pb文件加载到Google的Inception模型中。如果我想替换自己的.pb文件,该怎么做?我需要更改任何本机代码/方法吗?
- 通常,所有这些方法之间到底有什么区别?或更广泛地说,/。
as_graph_def()
ckpt / .pb有什么区别?
简而言之,我正在寻找一种将图形(如各种操作等)及其权重/变量都保存到文件中的方法,然后可以将其用于将图形和权重加载到另一个程序中,以供使用(不一定要继续/训练)。
关于此主题的文档不是很简单,因此,非常感谢您提供任何答案/信息。