python - TensorFlow 用户应该更喜欢 SavedModel 而不是 Checkpoint 或 GraphDef?

标签 python c++ tensorflow

来自 SavedModel Docs ,

SavedModel, the universal serialization format for TensorFlow models.

SavedModel wraps a TensorFlow Saver. The Saver is primarily used to generate the variable checkpoints.

据我了解,如果有人想使用 TensorFlow Serving,SavedModel 是必须的。但是,我可以在没有 SavedModel 的情况下将 Tensorflow 模型部署到服务服务器:卡住图形并将其导出为 GraphDef,然后使用 ReadBinaryProto 将图形加载到 Session 中Create在 C++ 或 Import 中在围棋中。

SavedModel 的目的是什么?用户应该更喜欢 SavedModel 而不是 Checkpoint 或 GraphDef 来聚合更多与模型相关的数据?

最佳答案

检查点包含 TensorFlow 模型中(某些)变量的值。它由 Saver 创建, 要么指定特定的 Variable 来保存,要么默认保存所有(非本地)变量。

要使用检查点,需要有兼容的TensorFlowGraph,其Variables与Variables同名检查点。 (如果您没有兼容的 Graph,您仍然可以使用 contrib 中的 init_from_checkpoint 实用程序将存储在检查点中的值加载到选定的 Variable 中。)

SavedModel更全面:它包含一组 Graph(MetaGraph s,实际上是保存集合等),以及一个应该与这些 兼容的检查点图表s,以及运行模型所需的任何 Assets 文件(例如词汇文件)。对于它包含的每个 MetaGraph,它还存储一组签名。签名定义(命名)输入和输出张量。

这意味着只要给定一个 SavedModel,您就可以编写工具(例如 tensorflow/serving,或将出现在 中的新 saved_model 命令行实用程序tools/ 很快)解释或执行里面的图表。您所需要提供的只是数据。

如果有疑问,我总是会在编写 SavedModel 方面犯错,而不仅仅是检查点。这不仅允许您使用 tensorflow/serving(以及其他数量会增加的简洁实用程序),还可以确保您拥有运行模型所需的所有信息。没有什么比您无法再使用的检查点更令人沮丧的了,因为您修改了模型,现在它与检查点文件不兼容,您要做的就是通过它运行一些预测以进行比较。

关于python - TensorFlow 用户应该更喜欢 SavedModel 而不是 Checkpoint 或 GraphDef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42216208/

相关文章:

python - 按索引列过滤分组数据集

python - 对由列表乘法创建的嵌套引用列表进行深度复制不起作用

android - QT 5.2 Beta 将 QTQuick 部署到 Android 失败 : Invalid json file

C++ - 在运行时从基类指针识别派生类

android - 如何将 Tensorflow 与 react-native 一起使用?

python - 找不到 `protoc` 命令

python - 如何将多个列表导出到一个 csv?

python - 如何理解 TensorFlow 中的 `tensor` 一词?

c++ - 在 C 或 C++ 中使用分布生成数字

python - 凯拉斯 - ValueError : The first layer in a Sequential model must get an `input_shape` or `batch_input_shape` argument