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.Savertf.GraphDef 定义您的整体模型,以及一个 "signature" 来描述输入和输出你的模特。

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

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

您可以看一下我的示例实现(eval.py 评估模型而不重新定义模型):