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

Min*_*ark 6 queue timeout tensorflow

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

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

我发现具有出队超时的唯一解决方案是operation_timeout_in_ms在创建会话时设置配置选项,但这适用于图中的所有操作(对于此会话).不太精细.

还有其他选择吗?

mrr*_*rry 7

您可以在单个tf.Session.run()调用上设置超时,这在您具有可能阻塞操作(例如a)时最有用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.
  # ...
Run Code Online (Sandbox Code Playgroud)