Byo*_*Lee 30 c++ python tensorflow
来自SavedModel文档,
SavedModel,TensorFlow模型的通用序列化格式.
和
SavedModel包装了TensorFlow Saver.Saver主要用于生成变量检查点.
根据我的理解,SavedModel
如果有人想要使用TensorFlow服务,那是必须的.不过,我可以部署Tensorflow模型服务,而无需服务器SavedModel
:冻结图并将其导出为GraphDef
,利用负载曲线进入会议ReadBinaryProto
和创建 C++或导入围棋.
SavedModel的目的是什么?用户是否更喜欢SavedModel而不是Checkpoint或GraphDef来聚合更多与模型相关的数据?
wic*_*cke 44
检查点包含TensorFlow模型中(某些)变量的值.它由a创建Saver
,或者给定特定的Variable
s来保存,或者默认保存所有(非本地)变量.
要使用检查点,您需要具有兼容的TensorFlow Graph
,其Variable
名称Variable
与检查点中的s具有相同的名称.(如果没有兼容的Graph
,您仍然可以Variable
使用init_from_checkpoint
contrib中的实用程序将存储在检查点中的值加载到选定的s 中.)
SavedModel
更全面:它包含一组Graph
s(MetaGraph
事实上,保存集合等),以及应该与这些Graph
s 兼容的检查点,以及运行模型所需的任何资产文件(例如词汇文件).对于MetaGraph
它包含的每一个,它还存储一组签名.签名定义(命名)输入和输出张量.
这意味着只给出一个SavedModel,您可以编写解释或执行内部图形的工具(例如tensorflow/serving
,或saved_model
将在tools/
短期内出现的新命令行实用程序).您需要提供的只是数据.
如果有疑问,我总是会错误地写一个SavedModel
,而不仅仅是一个检查站.这不仅允许您使用tensorflow/serve(以及其他数量增长的整洁实用程序),它还可以确保您拥有运行模型所需的所有信息.没有什么比你不能再使用的检查点更令人沮丧的了,因为你修改了你的模型,现在它与检查点文件不兼容,而你想要做的就是通过它运行一些预测来进行比较.