Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TensorFlow用户应该更喜欢SavedModel而不是Checkpoint或GraphDef吗?_Python_C++_Tensorflow - Fatal编程技术网

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

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,TensorFlow模型的通用序列化格式

SavedModel包装了TensorFlow保护程序。该保护程序主要用于生成变量检查点

根据我的理解,如果有人想使用TensorFlow服务,
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。