Tensorflow导出和重用Python中的Estimator对象

时间:2017-06-16 14:19:50

标签: tensorflow compilation export

问题在于Tensorflow及其更高的API估算器,更一般地说是关于导出和重用模型。

存在几种导出张量流模型的工具:tf.train.Saver,直接写入和导入图形及其相关权重。

我的兴趣在于tf.estimator.Estimator对象以及我们如何重用它们。我的用例很简单:我在tensorflow中使用一个简单的模型,并希望在更复杂的一个中使用它的预测。

有一种export_savemodel方法可以为模型提供服务,但我需要通过端口在我的模型中进行通信,我不确定这是否适合培训。

我的问题如下:

  1. 是否有(简单)方法在python中使用和导入export_savemodel的输出?我猜你可以在技术上使用C ++代码并围绕它们创建包装器吗?

  2. 有没有一种有效的方法来编译tf.estimator.Estimator并在Python中重用它? XLA编译器似乎很有趣,但我无法确定是否可以在Python中使用结果。

  3. 一般来说,如何在Tensorflow中重复使用以前训练过的模型的最佳做法是什么?

  4. 非常感谢您的阅读!

    编辑(我自己的回答):接受的答案提供了使用saved_model API。但是,我认为理解图形和冻结图形的概念是值得的。这个gist link说明了可能在saved_model api中复制的主要步骤。基本上,你必须:

    1. 使用重新定义的输入操作重建图形;
    2. 冻结此版本;
    3. 在调用input_map重新加载模型后,为tf.import_graph_def参数提供新输入。

1 个答案:

答案 0 :(得分:0)

  1. 是的,请参阅此文档https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/saved_model/README.md。特别是APIs.Loader.Python部分。
  2. “编制估算器”是什么意思?估算器使用的所有数据都保存到SavedModel中。重置只是高级协调逻辑。矩阵乘法等实际操作由C ++库提供,可在您拥有的任何硬件上运行 - CPU,GPU或TPU。 XLA是一个非常低级的编译器,远非Estimator API。有关它的更多信息,请搜索关于它的讨论“XLA:TensorFlow,编译!(TensorFlow Dev Summit 2017)”
  3. 上面的链接提供了一个非常高级的API。对于下层,请参阅https://www.tensorflow.org/programmers_guide/meta_graph。在更低层,有GraphDef(参见meta_graph页面中的链接)