Python 中的 Tensorflow 导出和重用 Estimator 对象
Tensorflow export and reuse Estimator object in Python
问题是关于 Tensorflow 及其更高的 API 估计器,更普遍的是关于导出和重用模型。
存在多种导出张量流模型的工具:tf.train.Saver,直接使用相关权重编写和导入图形。
我的兴趣在于 tf.estimator.Estimator 对象以及我们如何重用它们。我的用例非常简单:我在 tensorflow 中拟合了一个简单的模型,并希望在更复杂的模型中使用它的预测。
有一个 export_savemodel
方法来为模型提供服务,但是我需要通过端口在我的模型中进行通信,我不确定这是否适合训练。
我的问题如下:
有没有一种(简单的)方法可以在 python 中使用和导入 export_savemodel
的输出?我猜你可以在技术上使用 C++ 代码并围绕它们创建包装器?
是否有一种有效的方法来编译 tf.estimator.Estimator
并在 Python 中重用它? XLA 编译器似乎很有趣,但我无法确定是否可以在 Python.
中使用结果
一般来说,关于如何在 Tensorflow 中重用以前训练的模型的最佳实践是什么?
感谢您的阅读!
EDIT(我自己的回答):接受的答案提供使用 saved_model
API。但是,我认为理解图和冻结图的概念是值得的。此 gist link 说明了可能在 saved_model
api 中复制的主要步骤。基本上,您必须:
- 使用重新定义的输入操作重建图形;
- 冻结此版本;
- 在调用
tf.import_graph_def
重新加载模型时为 input_map
参数提供新的输入。
- 是的,请参阅此文档 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/saved_model/README.md。特别是 APIs.Loader.Python 部分。
- "compile an estimator" 是什么意思? estimator 使用的所有数据都保存到 SavedModel 中。重置只是高级编排逻辑。矩阵乘法等实际操作由 C++ 库和 运行 在您拥有的任何硬件(CPU、GPU 或 TPU)上提供。 XLA 是一个非常低级的编译器,与 Estimator API 相去甚远。有关它的更多信息,请搜索关于它的讨论 "XLA: TensorFlow, Compiled! (TensorFlow Dev Summit 2017)"
- 上面的link提供了一个非常高级的API。下层见https://www.tensorflow.org/programmers_guide/meta_graph。在更底层,有 GraphDef(参见 meta_graph 页面中的 links)
问题是关于 Tensorflow 及其更高的 API 估计器,更普遍的是关于导出和重用模型。
存在多种导出张量流模型的工具:tf.train.Saver,直接使用相关权重编写和导入图形。
我的兴趣在于 tf.estimator.Estimator 对象以及我们如何重用它们。我的用例非常简单:我在 tensorflow 中拟合了一个简单的模型,并希望在更复杂的模型中使用它的预测。
有一个 export_savemodel
方法来为模型提供服务,但是我需要通过端口在我的模型中进行通信,我不确定这是否适合训练。
我的问题如下:
有没有一种(简单的)方法可以在 python 中使用和导入
export_savemodel
的输出?我猜你可以在技术上使用 C++ 代码并围绕它们创建包装器?是否有一种有效的方法来编译
tf.estimator.Estimator
并在 Python 中重用它? XLA 编译器似乎很有趣,但我无法确定是否可以在 Python. 中使用结果
一般来说,关于如何在 Tensorflow 中重用以前训练的模型的最佳实践是什么?
感谢您的阅读!
EDIT(我自己的回答):接受的答案提供使用 saved_model
API。但是,我认为理解图和冻结图的概念是值得的。此 gist link 说明了可能在 saved_model
api 中复制的主要步骤。基本上,您必须:
- 使用重新定义的输入操作重建图形;
- 冻结此版本;
- 在调用
tf.import_graph_def
重新加载模型时为input_map
参数提供新的输入。
- 是的,请参阅此文档 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/saved_model/README.md。特别是 APIs.Loader.Python 部分。
- "compile an estimator" 是什么意思? estimator 使用的所有数据都保存到 SavedModel 中。重置只是高级编排逻辑。矩阵乘法等实际操作由 C++ 库和 运行 在您拥有的任何硬件(CPU、GPU 或 TPU)上提供。 XLA 是一个非常低级的编译器,与 Estimator API 相去甚远。有关它的更多信息,请搜索关于它的讨论 "XLA: TensorFlow, Compiled! (TensorFlow Dev Summit 2017)"
- 上面的link提供了一个非常高级的API。下层见https://www.tensorflow.org/programmers_guide/meta_graph。在更底层,有 GraphDef(参见 meta_graph 页面中的 links)