【发布时间】:2016-12-21 05:17:44
【问题描述】:
根据我目前收集到的信息,有几种不同的方法可以将 TensorFlow 图转储到文件中,然后将其加载到另一个程序中,但我无法找到关于它们如何工作的明确示例/信息.我已经知道的是:
- 使用
tf.train.Saver()将模型的变量保存到检查点文件 (.ckpt) 中并稍后恢复它们 (source) - 将模型保存到 .pb 文件中,然后使用
tf.train.write_graph()和tf.import_graph_def()(source) 重新加载它 - 从 .pb 文件加载模型,重新训练,然后使用 Bazel (source) 将其转储到新的 .pb 文件中
- 冻结图表以将图表和权重一起保存 (source)
- 使用
as_graph_def()保存模型,对于权重/变量,将它们映射为常量 (source)
但是,关于这些不同的方法,我无法解决几个问题:
- 关于检查点文件,它们是否只保存模型的训练权重?是否可以将检查点文件加载到新程序中并用于运行模型,或者它们是否只是作为在特定时间/阶段保存模型中权重的一种方式?
- 关于
tf.train.write_graph(),是否也保存了权重/变量? - 关于 Bazel,它是否只能从 .pb 文件中保存/加载以进行再训练?是否有一个简单的 Bazel 命令可以将图形转储到 .pb 中?
- 关于冻结,可以使用
tf.import_graph_def()加载冻结的图吗? - 用于 TensorFlow 的 Android 演示从 .pb 文件加载到 Google 的 Inception 模型中。如果我想替换我自己的 .pb 文件,我该怎么做呢?我需要更改任何本机代码/方法吗?
- 总的来说,所有这些方法之间究竟有什么区别?或者更广泛地说,
as_graph_def()/.ckpt/.pb 之间有什么区别?
简而言之,我正在寻找一种将图形(如各种操作等)及其权重/变量保存到文件中的方法,然后可用于加载图形和权重进入另一个程序,以供使用(不一定要继续/再培训)。
关于这个主题的文档不是很简单,所以任何答案/信息将不胜感激。
【问题讨论】:
-
最新/最完整的 API 是元图,它可以让您一次保存所有三个 - 1) 图 2) 参数值 3) 集合:tensorflow.org/versions/r0.10/how_tos/meta_graph/index.html
标签: python tensorflow protocol-buffers