2016-08-30 68 views
4

我正在构建一个神经网络集合,其中每个网络从输入队列中读取输入并将其预测写入输出队列,并且单独的客户端将新输入推送到所有输入队列,然后从每个输出队列中提取单个预测并将它们聚合起来以产生整体的预测。当从TensorFlow队列中排出项目时是否可以设置超时值?

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

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

还有其他的选择吗?

回答

5

您可以在个人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. 
    # ... 
+0

正是我一直在寻找,再次感谢@mrry。 – MiniQuark

相关问题