问题是关于Tensorflow及其更高的API估算器,以及更一般的关于导出和重复使用模型的问题。Tensorflow导出和复用Python中的Estimator对象
有几种工具可以导出张量流模型:tf.train.Saver,直接用它们的相关权重写入和导入图。
我的兴趣在于tf.estimator.Estimator对象以及我们如何重用它们。我的用例非常简单:我在张量流中使用了一个简单的模型,并且希望在更多参与者中使用它的预测。
存在export_savemodel
服务模型的方法,但是我需要通过端口在我的模型中进行通信,我不确定这是否适合于训练。
我的问题有以下几点:
是否有一个(简单)的方式来使用和进口的
export_savemodel
输出的蟒蛇?我猜你可以在技术上使用C++代码并在它们周围创建包装?是否有一种有效的方法来编译
tf.estimator.Estimator
并在Python中重用它? XLA编译器看起来很有趣,但我无法确定是否可以在Python中使用结果。一般来说,如何在Tensorflow中重用先前训练过的模型的最佳做法是什么?
非常感谢您的阅读!
编辑(我自己的回答):接受的答案提供使用saved_model
API。但是,我认为理解图和冻结图的概念是值得的。这gist link说明了可能在saved_model
api中复制的主要步骤。基本上,你必须:
- 用重新定义的输入操作重建图形;
- 冻结此版本;
- 在调用
tf.import_graph_def
重新加载模型时提供了input_map
参数的新输入。
非常感谢您的回答。你认为你有关于如何使用saved_model对象的链接?我有些努力去理解'input_signatures'和'output_signatures'。与此同时,我发现元图解是一个很好的解决方案,因为您可以重新定义输入参数(因为您通常使用队列进行训练并使用变量/张量进行推断),冻结图并保存图。我尝试了XLA的可能性,但是我的构建失败,不幸运行启动任何会话对象。 – Neo2551
@ Neo2551我不确定'input_signatures'和'output_signatures'是什么意思。如果你的意思是存储在SavedModel中的SIgnatureDefs,你可以看到这个文档https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/signature_defs.md – iga
非常感谢你的回答!这个文档真的很有用!我仍然在努力完全理解整个概念,但是这绝对支持我! – Neo2551