Python TensorFlow用户应该更喜欢SavedModel而不是Checkpoint或GraphDef吗?
从 SavedModel,TensorFlow模型的通用序列化格式 及 SavedModel包装了TensorFlow保护程序。该保护程序主要用于生成变量检查点 根据我的理解,如果有人想使用TensorFlow服务,Python TensorFlow用户应该更喜欢SavedModel而不是Checkpoint或GraphDef吗?,python,c++,tensorflow,Python,C++,Tensorflow,从 SavedModel,TensorFlow模型的通用序列化格式 及 SavedModel包装了TensorFlow保护程序。该保护程序主要用于生成变量检查点 根据我的理解,如果有人想使用TensorFlow服务,SavedModel是必须的。但是,我可以在没有代码> > SaveDebug < /C> >的情况下,将TysFooFrm模型部署到Service Server:冻结图,并将其导出为 CordEff>代码>,并加载到图中,使用 RealBydPrtoto < /C> >和C++或I
SavedModel
是必须的。但是,我可以在没有代码> > SaveDebug < /C> >的情况下,将TysFooFrm模型部署到Service Server:冻结图,并将其导出为<代码> CordEff>代码>,并加载到图中,使用<代码> RealBydPrtoto < /C> >和C++或IO。
SavedModel的用途是什么?用户是否更喜欢SavedModel而不是Checkpoint或GraphDef来聚合更多与模型相关的数据?检查点包含TensorFlow模型中(某些)变量的值。它是由一个变量创建的,该变量要么给定要保存的特定
变量
s,要么默认保存所有(非本地)变量
要使用检查点,您需要有一个兼容的TensorFlow图形
,其变量
与检查点中的变量
具有相同的名称。(如果没有兼容的图形
,仍可以使用contrib中的实用程序将检查点中存储的值加载到选定的变量
中。)
更全面:它包含一组Graph
s(实际上是保存集合等),以及一个与这些Graph
s兼容的检查点,以及运行模型所需的任何资产文件(例如词汇表文件)。对于它包含的每个元图
,它还存储一组签名。签名定义(命名)输入和输出张量
这意味着,只要给定一个SavedModel,您就可以编写工具(如tensorflow/serving
,或新的saved\u model
命令行实用程序,该实用程序将很快出现在tools/
中)来解释或执行其中的图形。你所要提供的只是数据
如果有疑问,我总是会错误地编写一个
SavedModel
,而不仅仅是一个检查点。这不仅允许您使用tensorflow/serving(以及其他数量将不断增长的整洁实用程序),还确保您拥有运行模型所需的所有信息。没有什么比检查点更令人沮丧的了,你不能再使用它了,因为你修改了你的模型,现在它与检查点文件不兼容,你所要做的就是通过它运行一些预测以进行比较。我认为,大多数人都使用检查点,而tf。保存的\u模型
是我们引入的一个新功能。使用起来应该更好。有一个ddoc。@drpng我想知道处理保存模式的“最佳实践”是什么。请参阅此官方文档,它在“功能”部分中对保存模式进行了明确的比较。我可以在这里连接并要求您更新您的答案,并提供一些有关使用SavedModel
进行培训的信息吗?检查点很好,因为它们允许您保留多个模型版本。因为他们允许训练中止SavedModel
似乎只保存一次检查点(当调用add_meta_graph_和_variables
时),并且不再保存。有没有一种定期编写检查点的方法?我们通常定期编写检查点,然后将其中一个(通常是最好的一个)包装到一个SavedModel中。您也可以简单地将每个检查点都保存到一个SavedModel中,没有理由只保存一个。SavedModel的加载时间似乎要长得多,请参见此处,但是Saver
也将图形保存在.meta文件中,因此我也可以使用Saver
获得完整的信息(图形+变量),不是吗?不,.meta文件不包含变量。您有一个包含变量的检查点,但它是一个单独的文件,不能保证它适合任何特定(Meta)GraphDef。