Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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:如何在没有源代码的情况下发布模型?_Python_Tensorflow - Fatal编程技术网

Python TensorFlow:如何在没有源代码的情况下发布模型?

Python TensorFlow:如何在没有源代码的情况下发布模型?,python,tensorflow,Python,Tensorflow,我正在使用Tensorflow+Python 我很好奇是否可以在没有详细源代码的情况下发布一个保存的Tensorflow模型(体系结构+经过训练的变量)。我知道tf.train.Saver(),但它看起来只保存变量,为了恢复/运行它们,用户需要“定义”相同的体系结构 仅出于测试/运行目的,是否有一种方法可以在不使用源代码的情况下发布保存的{architecture+trained variables},这样用户就可以直接进行查询并获得结果?该项目旨在使此用例变得简单(假设最终用户仅使用模型进行推

我正在使用Tensorflow+Python

我很好奇是否可以在没有详细源代码的情况下发布一个保存的Tensorflow模型(体系结构+经过训练的变量)。我知道
tf.train.Saver()
,但它看起来只保存变量,为了恢复/运行它们,用户需要“定义”相同的体系结构

仅出于测试/运行目的,是否有一种方法可以在不使用源代码的情况下发布保存的{architecture+trained variables},这样用户就可以直接进行查询并获得结果?

该项目旨在使此用例变得简单(假设最终用户仅使用模型进行推理,而不是培训)。TensorFlow服务包括一个
导出器
类,该类接受您的
tf.train.Saver
,定义您的整体模型的
tf.GraphDef
,以及一个描述模型输入和输出的“签名”


对导出模型有很好的介绍。

您可以从MetaGraphDef(默认情况下使用检查点保存:那些.meta文件)构建
保存程序。然后使用该保护程序恢复您的模型。因此用户不必在代码中重新定义图形。但是他们仍然需要找出模型特征(输入、输出变量)。我使用
tf.Collection
解决这个问题(但我也有兴趣找到更好的方法)

您可以看一下我的示例实现(无需重新定义模型即可对模型进行评估的
eval.py
):

  • 从元图重构存储程序
  • 从集合中获取输入变量
  • 如何定义模型

通过实施,您是否从经过培训的模型中检索到正确的权重?我只能看到您得到了输入和输出层(+)@NicolaiAntonLynnerup是的,保护程序负责从每个变量的检查点文件中加载二进制文件。您提到的行检索必要的输入和输出变量(而不是层),因此我们可以在求值中执行图形:将它们视为函数签名,可视化分类器映射图像->类逻辑。换句话说,如果没有这些变量(占位符也是变量),我们就无法构造此调用: