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

时间:2016-04-06 20:59:10

标签: python tensorflow

我正在使用Tensorflow + Python。

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

仅用于测试/运行目的,是否有办法在没有源代码的情况下发布已保存的{架构+训练变量},以便用户可以只是转换查询并获得结果?

2 个答案:

答案 0 :(得分:1)

TensorFlow Serving项目旨在简化此用例(假设最终用户仅使用模型进行推理,而非培训)。 TensorFlow服务包括Exporter类,其中包含tf.train.Saver,定义整体模型的tf.GraphDef,以及描述模型输入和输出的“签名”。

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

答案 1 :(得分:1)

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

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