我正在使用Tensorflow + Python。
我很好奇是否可以在没有详细源代码的情况下发布已保存的Tensorflow模型(架构+训练变量)。我知道tf.train.Saver()
,但它看起来只保存变量,为了恢复/运行它们,用户需要“定义”相同的架构。
仅用于测试/运行目的,是否有办法在没有源代码的情况下发布已保存的{架构+训练变量},以便用户可以只是转换查询并获得结果?
答案 0 :(得分:1)
TensorFlow Serving项目旨在简化此用例(假设最终用户仅使用模型进行推理,而非培训)。 TensorFlow服务包括Exporter
类,其中包含tf.train.Saver
,定义整体模型的tf.GraphDef
,以及描述模型输入和输出的“签名”。
basics tutorial对导出模型有很好的介绍。
答案 1 :(得分:1)
您可以从MetaGraphDef构建Saver
(默认情况下与检查点一起保存:那些.meta文件)。然后使用该Saver恢复您的模型。因此,用户无需在代码中重新定义图表。但是他们仍然需要弄清楚模型签名(输入,输出变量)。我使用tf.Collection
来解决这个问题(但我有兴趣找到更好的方法来做到这一点)。
您可以查看我的示例实现(eval.py
在不重新定义模型的情况下评估模型):