从TensorFlow队列中出列项目时是否可以设置超时?

时间:2016-08-30 14:39:03

标签: timeout queue tensorflow

我正在构建一个神经网络集合,其中每个网络从输入队列读取输入并将其预测写入输出队列,并且单独的客户端将新输入推送到所有输入队列,然后从每个输出队列中提取单个预测并汇总它们以产生整体预测。

我希望系统对慢速(或崩溃)神经网络客户端具有弹性,因此我需要在从每个输出队列中拉出时设置超时。理想情况下,聚合器图表的行为很好,只是忽略该预测。

我发现有一个出队超时的唯一解决方案是在创建会话时设置$port=new-object system.io.ports.serialport com1,9600,None,8,One $port.Open() $port.WriteLine("AT^NDISDUP=1,1,`r""web123`r""") $port.Close() 配置选项,但这适用于图中的所有操作(对于此会话)。不太精细。

还有其他选择吗?

1 个答案:

答案 0 :(得分:7)

您可以在单个tf.Session.run()调用上设置超时,这在您有可能阻止操作时最有用,例如dequeue()。为此,将可选的tf.RunOptions对象传递给run()调用,并将timeout_in_ms字段设置为所需的超时(以毫秒为单位):

op = ...  # Assume this depends on dequeuing a tensor from a queue.
sess = tf.Session()

# Set a 10-second timeout.
run_options = tf.RunOptions(timeout_in_ms=10000)
try:
  sess.run(op, options=run_options)
except tf.errors.DeadlineExceededError:  # This will be raised if the timeout expires.
  # ...