Ich versuche, eine einzelne Schicht Perceptron zu trainieren auf der folgenden Daten-Datei in Tensor-Flow (meinen Code auf this basieren):Tensorflow - Formfehler, wenn Daten aus der Datei zu lesen
1,1,0.05,-1.05
1,1,0.1,-1.1
....
, wo die letzte Spalte ist die Label (Funktion von 3 Parametern) und die ersten drei Spalten sind das Funktionsargument. Der Code, der die Daten und trainiert das Modell liest (I vereinfachen es für die Lesbarkeit):
import tensorflow as tf
... # some basics to read the data
example, label = read_file_format(filename_queue)
... # model construction and parameter setting
# Launch the graph
with tf.Session() as sess:
sess.run(init)
for epoch in range(training_epochs):
_, c = sess.run([optimizer, cost], feed_dict={x: example, y: label})
print("Optimization Finished!")
aber wenn ich es laufen, gibt es folgende Fehlermeldung:
Traceback (most recent call last):
File "nn.py", line 85, in <module>
_, c = sess.run([optimizer, cost], feed_dict={x: example, y: label})
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 710, in run
run_metadata_ptr)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 887, in _run
% (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (3,) for Tensor u'Placeholder:0', which has shape '(?, 3)'
Gibt es eine Tensorflowy-Methode zum Erstellen einer Charge? Ich habe example.reshape (1,3) ausprobiert, aber es hat es noch schlimmer gemacht: "ValueError: Kann den Wert von shape() für Tensor u'Placeholder_1: 0 'nicht einspeisen, der Form hat (?, 1)' " – user3639557
Nein, das hat es besser gemacht! Jetzt beschweren sie sich über Placeholder_1, was Y ist. Also formuliere das zu (-1, 1) und du solltest gut sein. – MMN
Und keine Sorge, dies ist der Tensorflowy Weg, um den Batch zu erstellen. TF-Graphen beginnen bei den Platzhaltern, sodass Sie Ihre Daten mit natürlichen Methoden so weit migrieren, wie Sie zum Erstellen des Stapels benötigen. – MMN