Tensorflow不精确超时

时间:2017-01-09 19:38:00

标签: tensorflow

我已经测试了sess.runs的超时功能(应用于卷积神经网络),似乎超时不是非常精确。

例如,如果我将超时设置为800毫秒,则在触发超时异常之前可能会有1-2秒的延迟。这种方式让我相信在计算节点之间没有捕获取消通知。 (根据时间表分别为.2-.5秒)

所以

1)有没有办法让超时更精确?

2)节点计算之间是否存在Tensorflow取消通知?

1 个答案:

答案 0 :(得分:1)

TensorFlow中的取消和超时机制仅用于取消少量阻止操作,特别是:dequeuing从空队列enqueuing到完整队列,以及文件中的reading

如果您运行包含非阻止操作的图表,例如tf.matmul()tf.nn.conv2d(),并且超时到期,TensorFlow通常会等到这些操作完成之前以“超出截止日期”错误返回。

为什么会这样?我们添加了取消,因为用户开始在他们的图表中构建阻塞操作的管道(例如reading data),并且需要某种形式的取消来干净地关闭这些管道。超时还有助于调试不幸发生在这些管道中的死锁。相比之下,TensorFlow旨在尽可能高效地分派非阻塞操作:例如,在GPU上运行时,TensorFlow将异步地对GPU计算流上的多个操作进行排队,而不会阻止其完成。虽然技术上可以检查每个操作的执行之间的取消,但这会增加操作调度的延迟,并降低常见情况下的整体性能。

但是,如果非阻止操作的超时/取消对您的用例有用,请随时打开GitHub issue作为功能请求!