2017-12-05 1 views
0

Feed Warum gibt das folgende Stück Code eine Ausnahme? Ich füttere den Platzhalter über feed_dict= in der for Schleife, aber wenn ich die Werte von x oder y_tensor drucken, erhalte ich die folgende Fehlermeldung:Feed-Platzhalter-Trace in Tensorflow: 'tensorflow.python.framework.errors_impl.InvalidArgumentError: Sie müssen einen Wert für Platzhalter Tensor

'tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'input' with dtype float and shape [?,5]'.

Überraschenderweise ich habe nicht den Fehler für einen bestimmten Tensor, wenn Ich drucke einen anderen. Zum Beispiel, wenn ich nur y_tensor drucke, bekomme ich nicht die Fehlermeldung für die Zeile, wo ich x erklärte, und das Gegenteil. Ich verwende den Bereich 10 nur zum Testen des Problems. Das Hauptproblem besteht darin, dass die Optimierung unter dieser Bedingung nicht funktionieren kann. Wie behebe ich das?

Hier ist der Code:

x = tf.placeholder(tf.float32, [None, 5], name='input') 

W = tf.Variable(tf.zeros([5,1])) 
b = tf.Variable(tf.zeros([1])) 

y = tf.nn.softmax(tf.matmul(x, W) + b) 


y_tensor = tf.placeholder(tf.float32, [None, 1], name='output') 
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_tensor * tf.log(y), reduction_indices=[1])) 

optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) 


session = tf.Session() 
init = tf.global_variables_initializer() 
session.run(init) 

for i in range(10): 
    batch_xs = [dataA[i], dataB[i], dataC[i], dataD[i], 
       dataE[i]]] 
    batch_ys = [[dataG[i]]] 
    session.run(optimizer ,feed_dict={x: batch_xs, y_tensor: batch_ys}) 

print(session.run(y)) 

Antwort

0

Da y auf x abhängt. Daher müssen Sie die letzte Zeile ändern:

print(session.run(y, ,feed_dict={x: xs_test})) 

wo xs_test ist Ihre Testdaten.

Verwandte Themen