TensorFlow:未找到节点

时间:2016-05-11 07:21:18

标签: python csv tensorflow

我正在训练神经网络,并且一直运行此代码没有任何问题,但有时(两次)我在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) 这一事实有关但我不明白:

  1. 为什么它大部分时间都有效,但偶尔也没有?

  2. y_1 = sess.run(get_labels(step))是否在图表中添加或修改节点?我以为我只是在运行已经在图中定义的节点get_labels(step)。我在启动队列运行程序之前尝试完成图表,但这给了我一个错误,即无法修改最终图表。

  3. 编写代码的正确方法是什么?通常我只是重启我的程序而且很好 - 但显然我没有采用正确的方式。

  4. 谢谢!

    修改

    我认为重要的是要提到当我尝试在服务器上的单独屏幕上运行TensorFlow脚本时会发生这种情况,即我有一个运行TensorFlow脚本的屏幕,现在我创建了一个新的屏幕来运行不同的TensorFlow脚本。我刚开始使用屏幕,所以我可能会遗漏一些关于它们如何工作的基本信息。

0 个答案:

没有答案