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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow在Python中导出和重用Estimator对象相关的知识,希望对你有一定的参考价值。

问题是关于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中重用以前训练过的模型的最佳实践是什么?

非常感谢您的阅读!

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

  1. 使用重新定义的输入操作重建图形;
  2. 冻结这个版本;
  3. 在调用input_map重新加载模型时,为tf.import_graph_def参数提供新输入。
答案
  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页面中的链接)

以上是关于Tensorflow在Python中导出和重用Estimator对象的主要内容,如果未能解决你的问题,请参考以下文章

在另一个js文件中导出和重用一个js文件的重载函数[重复]

在 Microsoft Azure 中导出和导入入站安全规则

如何通过 DataGrip IDE 在单个文件中导出和导入 MySQL 模式

在 python 3.4 中导入 tensorflow 时出错“无法加载本机 TensorFlow 运行时”

如何在 Python 中导入 tensorflow lite 解释器?

TensorFlow 在 Python CLI 和 IPython CLI 中导入,但不在 IPython QtConsole 中