Tensorflow tf.estimator.Estimator 与 QueueRunner

Tensorflow tf.estimator.Estimator with QueueRunner

我正在重写我的代码以使用 tf.estimator.Estimator 作为我的模型的封装对象。 问题是 : 我看不出典型的输入管道如何适合图片。

我的输入管道使用由 tf.train.Coordinator 协调的队列。

为了满足 tf.estimator.Estimator 要求,我在 init_fn 函数中创建了所有 "input graph",调用时传递给估算器:

Estimator.train(...) 

看起来像这样 input_fn(f):

...create input graph...
qr = tf.train.QueueRunner(queue, [operations...])
tf.train.add_queue_runner(qr)

问题是:在这种情况下,如何分别在 Estimator.train(...) 的开始和开始处开始和停止 queue runners

开始

我想出了启动我可以传递的队列的方法,init_fn 这样做是为了传递给 Estimator 的脚手架对象。

但是如何加入线程并优雅地关闭它们 - 我不知道。

使用 tf.estimator 时是否有适合线程输入管道的参考架构?

Estimator class 是否准备好使用队列?

Estimator 使用 tf.train.MonitoredTrainingSession 处理启动和加入线程。您可以检查几个示例输入 fns,例如 tf.estimator.inputs.*tf.contrib.learn.io.read*