2016-09-13 3 views
0

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)' 

Antwort

1

Ihr Graph X erwartet zu sein ein Tensor der Form (?, 3). Ihre Beispieldaten haben die Form (3,), dh einen 1-dimensionalen Vektor der Länge 3. Entweder das Beispiel zu (1, 3) umformen, oder eine Gruppe von Beispielen in einem Schuss (zB 10, eine Form von (10, 3))

+0

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

+0

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

+0

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

Verwandte Themen