评估TensorFlow张量时执行停滞不前

时间:2017-06-15 08:27:45

标签: python numpy tensorflow

所以我的代码是:

with tf.Session() as sess:    
    init.run()
    epoch = 1
    iteration = 1
    print("Checkpoint 1")
    X_batch, y_batch = tf.train.batch([X_train, y_train], batch_size=batch_size)
    print("Checkpoint 2")
    X = X_batch.eval()
    y = X_batch.eval()
    print("Checkpoint 3")

问题在于,当执行最后2行时执行卡住,没有给出任何输出(仅打印检查点1和2)。我在谷歌搜索过,从tensorflow.python.framework.ops.Tensornumpy.ndarray的转换似乎是一项微不足道的操作。

我还尝试了以下内容,以防它产生一些影响:

X = X_batch.eval(session = sess)
y = X_batch.eval(session = sess)

编辑:我尝试使用互动会话,问题仍然存在

`sess = tf.InteractiveSession()
 X_batch, y_batch = tf.train.batch([X_train, y_train], batch_size=batch_size)
type(X_batch)
type(y_batch)
print(type(X_batch.eval()))
sess.close()`

1 个答案:

答案 0 :(得分:1)

您需要启动隐藏在queue中的tf.train.batch转轮,例如使用tf.train.Coordinator(例如thisthis来获取更多见解)。根据方法的文档字符串(我的亮点):

  

此功能使用队列实施。一个QueueRunner         队列已添加到当前Graph的{​​{1}}集合中。

  

返回的操作是 dequeue操作并将抛出     QUEUE_RUNNER如果输入队列已用尽。如果这     操作正在输入另一个输入队列,其队列运行器将捕获     但是,如果在主线程中使用此操作,则会出现此异常     你有责任亲自抓住这个

由于你没有启动队列运行程序,线程会卡住,等待运行enqueue操作。

tf.errors.OutOfRangeError