TensorFlow:如何发布没有源代码的模型?
TensorFlow: How do I release a model without source code?
我正在使用 Tensorflow + Python。
我很好奇我是否可以在没有详细源代码的情况下发布一个已保存的 Tensorflow 模型(架构 + 训练变量)。我知道 tf.train.Saver()
,但它看起来只保存变量,为了 restore/run 它们,用户需要 "define" 相同的架构。
仅出于 testing/running 目的,有没有一种方法可以在没有源代码的情况下发布已保存的{架构+训练变量},以便用户只需进行查询并获得结果?
TensorFlow Serving 项目旨在使此用例简单明了(假设最终用户仅使用模型进行推理,而不是训练)。 TensorFlow Serving 包括一个 Exporter
class 来获取您的 tf.train.Saver
,tf.GraphDef
定义您的整体模型,以及一个 "signature" 来描述输入和输出你的模特。
basics tutorial 对导出模型有很好的介绍。
您可以从 MetaGraphDef 构建一个 Saver
(默认情况下与检查点一起保存:那些 .meta 文件)。然后使用该 Saver 恢复您的模型。因此用户不必在他们的代码中重新定义您的图表。但是他们仍然需要弄清楚模型签名(输入、输出变量)。我使用 tf.Collection
解决了这个问题(但我也有兴趣找到更好的方法来做到这一点)。
您可以看一下我的示例实现(eval.py
评估模型而不重新定义模型):
我正在使用 Tensorflow + Python。
我很好奇我是否可以在没有详细源代码的情况下发布一个已保存的 Tensorflow 模型(架构 + 训练变量)。我知道 tf.train.Saver()
,但它看起来只保存变量,为了 restore/run 它们,用户需要 "define" 相同的架构。
仅出于 testing/running 目的,有没有一种方法可以在没有源代码的情况下发布已保存的{架构+训练变量},以便用户只需进行查询并获得结果?
TensorFlow Serving 项目旨在使此用例简单明了(假设最终用户仅使用模型进行推理,而不是训练)。 TensorFlow Serving 包括一个 Exporter
class 来获取您的 tf.train.Saver
,tf.GraphDef
定义您的整体模型,以及一个 "signature" 来描述输入和输出你的模特。
basics tutorial 对导出模型有很好的介绍。
您可以从 MetaGraphDef 构建一个 Saver
(默认情况下与检查点一起保存:那些 .meta 文件)。然后使用该 Saver 恢复您的模型。因此用户不必在他们的代码中重新定义您的图表。但是他们仍然需要弄清楚模型签名(输入、输出变量)。我使用 tf.Collection
解决了这个问题(但我也有兴趣找到更好的方法来做到这一点)。
您可以看一下我的示例实现(eval.py
评估模型而不重新定义模型):