2017-11-01 2 views
1

Ich habe eine tiefe CNN basierend auf einer Forschungsarbeit aufgebaut und jetzt versuche ich es zu trainieren. Nach all den Windungen und Dekonvolutionen, die ich durchgeführt habe, habe ich ein Ergebnis namens final.Tensorflow: "Logits und Labels müssen die gleiche Größe haben"

In meinem Modell habe ich ein Bild der Größe 32x32x7, wo jedes Pixel eine entsprechende Dichte hat. Die Ausgabe des Modells wird eine Bezeichnung für jedes Pixel sein. Daher habe ich zwei Platzhalter deklariert, wobei "x" die Eingabe darstellt und "y_" die Ausgabe darstellt.

x = tf.placeholder(tf.float32, shape=[None, 7168]) 
y_ = tf.placeholder(tf.float32, shape=[None, 7168]) 

Jetzt, wo ich das Modell zu trainieren versucht bin, ich habe diese Linie

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=final)) 

Wenn das Modell trainiert wird ich die Fehlermeldung: Logits und Etiketten müssen gleich groß sein: logits_size = [7168,1] labels_size = [1,7168] Es macht Sinn, dass die Labels diese Größe haben, denn so habe ich es deklariert. Allerdings verstehe ich nicht, warum logits Größe [7168,1] beim Ausdrucken "final" hat die Form (1, 32, 32, 7, 1).

Antwort

1

Gerade tf.reshape Ihre final:

final = tf.reshape(final, [None, 7168]) 

Obwohl ich nicht sicher bin, warum es automatisch Abflachen wird, wenn Sie softmax_cross_entropy_with_logits nennen ...

Verwandte Themen