所以我的代码是:
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.Tensor
到numpy.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()`
答案 0 :(得分:1)
您需要启动隐藏在queue
中的tf.train.batch
转轮,例如使用tf.train.Coordinator
(例如this或this来获取更多见解)。根据方法的文档字符串(我的亮点):
此功能使用队列实施。一个
QueueRunner
队列已添加到当前Graph
的{{1}}集合中。
和
返回的操作是 dequeue操作并将抛出
QUEUE_RUNNER
如果输入队列已用尽。如果这 操作正在输入另一个输入队列,其队列运行器将捕获 但是,如果在主线程中使用此操作,则会出现此异常 你有责任亲自抓住这个。
由于你没有启动队列运行程序,线程会卡住,等待运行enqueue操作。
tf.errors.OutOfRangeError