Ich habe kürzlich die mnist Tensorflow-Tutorial und wollte versuchen, es ein wenig zu ändern. In diesem Beispiel versuche ich eine Eingabe von 28 * 28 * 3 (3 für r, g, b) zu erhalten und gebe genau die gleiche Ausgabe zurück. Ich mache einfach reines Weiß rein und raus.Tensorflow-Vorhersage enthält alle Nullen
#!/usr/bin/env python
import tensorflow as tf
input_layer_size = 2352 # number of pixels * number of color channels (rgb)
white = [255] * input_layer_size # white is a square of white pixels
white = [white]
sess = tf.InteractiveSession()
x = tf.placeholder(tf.float32, shape=[None, input_layer_size])
y_ = tf.placeholder(tf.float32, shape=[None, input_layer_size])
W = tf.Variable(tf.truncated_normal([input_layer_size,input_layer_size], stddev=0.1))
b = tf.Variable(tf.truncated_normal([input_layer_size], stddev=0.1))
sess.run(tf.initialize_all_variables())
y = tf.nn.softmax(tf.matmul(x,W) + b)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
for i in range(100):
train_step.run(feed_dict={x: white, y_: white})
feed_dict = {x:white}
classification = sess.run(y, feed_dict)
print ("Output:", classification[0])
aus irgendeinem Grund hierfür die Ausgabe [ 0., 0., 0., ..., 0., 0., 0.]
ist. Warum ist es nicht das erwartete Ergebnis()?
Ich habe den exakt gleichen Code mit den Mnist-Daten versucht und es funktioniert gut, gibt mir 10 Ausgangskanäle mit angemessenen Ergebnissen in jedem.
Aber was war falsch mit dem ursprünglichen Code? –
Mehrere Dinge waren falsch: –
Bitte ignorieren Sie meinen Unfall Kommentar oben. Mehrere Dinge lagen falsch: y wurde in den Bereich (1e-10, 1) geschnitten, während es etwa 255 sein sollte, um den Verlust zu minimieren, der Verlust selbst (Kreuz-Entropie von Softmax) ist für ein Klassifikationsproblem mit mehreren Klassen, aber nicht für ein Regressionsproblem. –