我正在训练神经网络,并且一直运行此代码没有任何问题,但有时(两次)我在Not Found: FetchOutputs node not found
行遇到错误y_1 = sess.run(get_labels(step))
(见下文) )。
get_labels(step)
是一个函数,用于返回文本文件中训练图像的正确标签。
def get_labels(step):
with open('labels.txt','r') as fin:
reader = csv.reader(fin)
c = [[int(s) for s in row] for i,row in enumerate(reader) if i==step]
label_numbers = np.array(c)
# Convert to one-hot vectors
numpy_label = np.zeros((BATCH_SIZE,5))
for i in range(BATCH_SIZE):
numpy_label[i,label_numbers[0][i]-1] = 1
# Convert to tensor
y_label = tf.convert_to_tensor(numpy_label,dtype=tf.float32)
return y_label
这是我的主要功能:
def main():
# Placeholder for correct labels
y_label = tf.placeholder(tf.float32,shape=[BATCH_SIZE,5])
< Other functions etc. >
sess.run(tf.initialize_all_variables())
tf.train.start_queue_runners(sess=sess)
for step in range(1000):
# Get labels for current batch
y_1 = sess.run(get_labels(step))
# Train
sess.run([train_step],feed_dict={y_label:y_1})
< Other stuff like writing summaries, saving variables etc. >
sess.close()
通过阅读GitHub上的一些问题,我知道这与我在{/ strong> y_1 = sess.run(get_labels(step))
之后调用tf.train.start_queue_runners(sess=sess)
这一事实有关但我不明白:
为什么它大部分时间都有效,但偶尔也没有?
y_1 = sess.run(get_labels(step))
是否在图表中添加或修改节点?我以为我只是在运行已经在图中定义的节点get_labels(step)
。我在启动队列运行程序之前尝试完成图表,但这给了我一个错误,即无法修改最终图表。
编写代码的正确方法是什么?通常我只是重启我的程序而且很好 - 但显然我没有采用正确的方式。
谢谢!
修改
我认为重要的是要提到当我尝试在服务器上的单独屏幕上运行TensorFlow脚本时会发生这种情况,即我有一个运行TensorFlow脚本的屏幕,现在我创建了一个新的屏幕来运行不同的TensorFlow脚本。我刚开始使用屏幕,所以我可能会遗漏一些关于它们如何工作的基本信息。