2016-11-15 7 views
-1

Ich bin ein TensorFlow noob. Ich habe ein TensorFlow-Modell aus der Open-Source-Implementierung von Deeppose trainiert und muss nun das Modell gegen eine neue Reihe von Bildern ausführen.Tensorflow Assign erfordert die Anpassung der beiden Tensoren. lhs shape = [20] rhs shape = [48]

Das Modell wurde auf Bilder der Größe 100 * 100 trainiert, also habe ich die Größe der neuen Bilder auf die gleiche Größe geändert. Ich habe 149 neue Bilder, um das Modell gegen zu laufen. Wenn ich das Modell ausführe, erhalte ich den folgenden Fehler.

InvalidArgumentError (see above for traceback): Assign requires shapes 
of both tensors to match. lhs shape= [20] rhs shape= [48] 

Auf der Linie

saver = tf.train.Saver(tf.all_variables()) 

Ich vermute, dass die gelernte Modellgröße und die Testbildgrößen nicht entsprechen. Ich bin mir nicht sicher, wie ich dieses Problem beheben kann. Ich habe die Liste der Variablen aus dem tf.all_variables() Aufruf ausgedruckt. Hier ist es

Tensor("Placeholder:0", shape=(128, 100, 100, 3), dtype=float32) 
(11, 11, 3, 20) 
conv1/weights:0 
(20,) 
conv1/biases:0 
(5, 5, 20, 35) 
conv2/weights:0 
(35,) 
conv2/biases:0 
(3, 3, 35, 50) 
conv4/weights:0 
(50,) 
conv4/biases:0 
(3, 3, 50, 75) 
conv5/weights:0 
(75,) 
conv5/biases:0 
(300, 1024) 
local1/weights:0 
(1024,) 
local1/biases:0 
(1024, 1024) 
local2/weights:0 
(1024,) 
local2/biases:0 
(1024, 0) 
softmax_linear/weights:0 
(0,) 
softmax_linear/biases:0 

Ich bin nicht sicher, wo der RHS-Parameter herkommt. Ich habe alle Konfigurationsdateien angeschaut und es scheint keinen Parameter zu geben, der diese Konfiguration spezifiziert.

Jede Hilfe bei der Lösung dieses Problems wird sehr geschätzt.

+0

Probieren Sie 'saver = tf.train.Saver (tf.all_variables(), reshape = True)' – yuefengz

+0

Können Sie größere Stacktrace zeigen? – sygi

+0

@Fake - Die Umformung hat nicht funktioniert, aber ich habe das Problem gelöst. Danke Kumpel –

Antwort

-1

So, wie es passiert, ich hatte den TensorFlow-Code aktualisiert, aber es nicht geschafft, es zu trainieren. Also habe ich auf die vorherige Version zurückgerollt, die entsprechenden Änderungen am Skript vorgenommen und funktioniert.

6

Versuchen Sie, alle Prüfpunkte zu löschen, die bei vorherigen Läufen gespeichert wurden. Manchmal, wenn die Architektur geändert wird und erneut ausgeführt wird, wird TF den alten Checkpoint (aber mit neuer Definition) übernehmen, und Sie erhalten diesen Fehler.

+1

sollte dies die richtige Antwort sein – wossoneri