Вы должны указать значение для тензора-заполнителя - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь реализовать lstm nn, используя tesorboarb, и получаю следующее сообщение об ошибке: Вы должны указать значение для тензора-заполнителя 'performance_1 / loss_summary'.

Я уже искал ответ во многихвопрос без результата.

with tf.name_scope('performance'):
loss = tf.placeholder(tf.float32,shape=None,name='loss_summary') 
    tf_loss_summary = tf.summary.scalar('loss', loss)
    tf_accuracy_ph = tf.placeholder(tf.float32,shape=None, name='accuracy_summary') 
    tf_accuracy_summary = tf.summary.scalar('accuracy', tf_accuracy_ph)

# Gradient norm summary
for g in gradients:
for var in v:
    if 'hidden3' in var.name and 'w' in var.name:
        with tf.name_scope('Gradients'):
            tf_last_grad_norm = tf.sqrt(tf.reduce_mean(g**2))
            tf_gradnorm_summary = tf.summary.scalar('grad_norm', tf_last_grad_norm)
            break   

# Merge all summaries together
performance_summaries = tf.summary.merge([tf_loss_summary,tf_accuracy_summary])

Другая часть кода, в которой я получаю сообщение об ошибке:

for ep in range(epochs):       

for step in range(train_seq_length//batch_size):

    u_data, u_labels = data_gen.unroll_batches()

    feed_dict = {}
    for ui,(dat,lbl) in enumerate(zip(u_data,u_labels)):            
        feed_dict[train_inputs[ui]] = dat.reshape(-1,1)
        feed_dict[train_outputs[ui]] = lbl.reshape(-1,1)

    feed_dict.update({tf_learning_rate: 0.0001, tf_min_learning_rate:0.000001})

    _, l = session.run([optimizer, loss], feed_dict=feed_dict)

    average_loss += l


if (ep+1) % valid_summary == 0:

    average_loss = average_loss/(valid_summary*(train_seq_length//batch_size))

  # The average loss
    if (ep+1)%valid_summary==0:
        print('Average loss at step %d: %f' % (ep+1, average_loss))

    train_mse_ot.append(average_loss)

    average_loss = 0 # reset loss

    predictions_seq = []

    mse_test_loss_seq = []

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Инициализировать loss как переменную.Когда вы определяете что-то как заполнитель, вы должны указать его значение при запуске зависимого от него графика.

0 голосов
/ 10 октября 2018

loss является заполнителем, поэтому вы должны дать ему значение.Вы, вероятно, не заметили это и перевесили вашу фактическую функцию потерь.Обычно резюме не являются заполнителями, поэтому вы неправильно понимаете ваши переменные и поток в вашем коде.

...