封闭的Tensorflow FIFO队列不会抛出异常

时间:2016-10-31 17:54:10

标签: exception queue tensorflow

我试图在CPU机器上运行以下代码:

HubSection

我基本上创建了一些虚拟功能和目标(用于分类任务),将数据推送到TF FIFO队列并关闭队列以模拟我在完全成熟的系统代码中需要的一些行为。 / p>

由于FIFO队列已关闭,我希望dequeue()函数在队列变空后抛出tf.errors.OutOfRangeError异常,如下所述 https://www.tensorflow.org/versions/r0.11/api_docs/python/io_ops.html#queues

这应该在迭代7之后发生,因为我们在特征/目标数据中有8个元素。然而,该程序只是一直挂着 - 我想是因为一些阻塞调用。

我在这里做错了什么?

RCB

1 个答案:

答案 0 :(得分:1)

代码中的fifo.close()调用实际上并不关闭队列:而是返回tf.Operation,运行时将关闭队列。如果使用以下代码替换它,您应该按预期看到异常:

close_op = fifo.close()
sess.run(close_op)

# Now `sess.run(data)` will return values until all of the elements in the queue
# have been dequeued.