TensorFlow用户是否应该选择SavedModel而不是Checkpoint或GraphDef?
c++
python
tensorflow
4
0

SavedModel Docs中

SavedModel,TensorFlow模型的通用序列化格式。

SavedModel包装了一个TensorFlow Saver。 Saver主要用于生成变量检查点。

根据我的理解,如果有人要使用TensorFlow Serving,则必须使用SavedModel 。但是,我可以在没有SavedModel情况下将Tensorflow Model部署到服务服务器:冻结图并将其导出为GraphDef ,然后使用ReadBinaryProto图加载到Session中并在C ++中创建或在Go中导入

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

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

检查点包含TensorFlow模型中的(某些)变量的值。它是由Saver创建的,该Saver被指定要保存的特定Variable ,或者默认情况下保存所有(非本地)变量。

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

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

这意味着仅给定一个SavedModel,您就可以编写解释或执行其中图形的工具(例如tensorflow/serving或不久后将出现在tools/的新的saved_model命令行实用程序)。您只需要提供数据即可。

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

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号