【问题标题】:why this Tensorflow code raises tf.errors.OutOfRangeError?为什么这个 TensorFlow 代码会引发 tf.errors.OutOfRangeError?
【发布时间】:2018-06-20 10:13:58
【问题描述】:

下面的这个 TensorFlow 代码引发了 tf.errors.OutofRangeError

try:
     while not coord.should_stop():        
          vector1,vector2,vector3,vector4,vector5,labels = sess.run([train_vector1,train_vector2,train_vector3,train_vector4,train_vector5,train_labels])
          shape1 = tf.shape(vector1)
          print (sess.run(shape1))
except tf.errors.OutOfRangeError:
   print ('tf.errors.OutOfRangeError')

finally:
    coord.request_stop()

为什么在读取所有样本时打印tf.errors.OutofRangeError? 这似乎不合理。

【问题讨论】:

    标签: python tensorflow queue outofrangeexception


    【解决方案1】:

    来自tf.errors.OutofRangeError文档:

    当操作迭代超过有效输入范围时引发。

    在“文件结束”条件下会引发此异常,例如当 tf.QueueBase.dequeue 操作在空队列上被阻塞,并且 tf.QueueBase.close 操作执行。

    即这是一种正常的、python 式的行为。您正在遍历队列,直到它为空;你知道它是在OutofRangeError 被抛出的时候。

    这也符合普通pythonQueue的行为:

    import Queue
    
    q = Queue.Queue()
    try:
        task=q.get(False)
        # ...
    except Queue.Empty:
        # Handle empty queue here
        pass
    

    您可以在此处找到关于这种 try-catch 概念的优点的小型讨论:Python: Queue.Empty Exception Handling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 2016-02-03
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      相关资源
      最近更新 更多