Error con los valores de alimentación para los marcadores de posición al ejecutar la operación de resumen fusionada

Soy nuevo en tensorflow y trato de aprender a visualizar con tensorboard. Tengo el siguiente código para una neural network con una capa oculta. Cuando traté de ejecutar el código en mi cuaderno jupyter, me dio el siguiente error:

StatusNotOK Traceback (última llamada más reciente) StatusNotOK: argumento no válido: debe ingresar un valor para el marcador de posición ‘y_2’ con dtype float y shape [20,10] [[Node: y_2 = Placeholderdtype = DT_FLOAT, shape = [20,10 ], _device = “/ job: localhost / replica: 0 / task: 0 / cpu: 0”]]

Sin embargo, cuando comento esta línea: summary = session.run (fusionado, feed_dict = feed_dict) Este progtwig se ejecuta en Aceptar. ¿Qué salió mal? Intenté mucho pero no pude entenderlo. Ayuda apreciada.

n_features = x_train.shape[1] n_samples = x_train.shape[0] n_labels = 10 n_hidden = 200 epoch_train = 200 learning_rate = 0.01 batch_size = 20 #build graph x_tr = tf.placeholder(tf.float32, shape=(None, n_features), name='x') y_tr = tf.placeholder(tf.float32, shape=(None, n_labels), name='y') w1 = tf.Variable (tf.truncated_normal([n_features, n_hidden]), name='weight1') b1 = tf.Variable (tf.zeros([n_hidden]), name='bias1') w2 = tf.Variable (tf.truncated_normal([n_hidden, n_labels]), name = 'weight2') b2 = tf.Variable(tf.zeros([n_labels]), name='bias2') w1_hist = tf.histogram_summary('weight1', w1) w2_hist = tf.histogram_summary('weight2', w2) b1_hist = tf.histogram_summary('bias1', b1) b2_hist = tf.histogram_summary('bias2', b2) y_hist = tf.histogram_summary('y', y_tr) with tf.name_scope('hidden') as scope: z1 = tf.matmul(x_tr, w1)+b1 a1 = tf.nn.relu (z1) with tf.name_scope('output') as scope: z2 = tf.matmul(a1, w2)+b2 a2 = tf.nn.softmax (z2) with tf.name_scope('cost') as scope: loss = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits(z2, y_tr)) cost_summ = tf.scalar_summary ('cost', loss) with tf.name_scope('train') as scope: optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss) def acc (pred, y): return (np.mean(np.argmax(pred, 1)==np.argmax(y,1))) #computing with tf.Session() as session: session.run(tf.initialize_all_variables()) merged = tf.merge_all_summaries() writer = tf.train.SummaryWriter (' ./logs/logs_1') for epoch in range (epoch_train): offset = epoch*batch_size % (x_train.shape[0]-batch_size) x_tr_batch = x_train[offset:offset+batch_size, :] y_tr_batch = y_train[offset:offset+batch_size, :] feed_dict = {x_tr:x_tr_batch, y_tr:y_tr_batch} _, cost, prediction = session.run ([optimizer, loss, a2], feed_dict=feed_dict) summary = session.run (merged, feed_dict=feed_dict) writer.add_summary(summary,epoch) if epoch % 20 ==0: print ('training accuracy:', acc(prediction, y_tr_batch)) print ('cost at epoch {} is:'.format(epoch), cost) pred_ts = session.run (a2, feed_dict = {x_tr:x_test}) print ('test accuracy is:', acc(pred_ts, y_test)) 

Siguiendo la discusión en los comentarios, creo que el resumen merged = tf.merge_all_summaries() está tomando en cuenta los resúmenes anteriores (provenientes de No sé dónde), que dependen de los marcadores de posición no inicializados.

La forma más rápida de solucionarlo (además de encontrar y eliminar estos marcadores de posición anteriores y no utilizados) es usar tf.merge_summary(...) con todos los resúmenes que desee agregar:

 merged = tf.merge_summary([w1_hist, b1_hist, w2_hist, b2_hist, y_hist, cost_summ])