Ich versuche, eine binäre Ausgabe mit Tensorflow vorherzusagen. Die Trainingsdaten haben ungefähr 69% Nullen für die Ausgabe. Die Eingabemerkmale sind reellwertig, und ich normalisierte sie, indem ich den Mittelwert subtrahiere und durch die Standardabweichung dividiere. Jedes Mal, wenn ich das Netzwerk betreibe, kann ich, egal, welche Techniken ich ausprobiert habe, kein Modell> 69% genau erhalten, und es sieht so aus, als würde mein Yhat nur auf Nullen konvergieren.Tensorflow konvergieren zu bedeuten
Ich habe eine Menge Dinge wie verschiedene Optimierer, Verlustfunktionen, Losgrößen usw. ausprobiert. Aber egal, was ich tue, es konvergiert zu 69% und geht nie über. Ich schätze, es gibt ein größeres Problem mit dem, was ich tue, aber ich kann es nicht finden.
Hier ist die neueste Version von meinem Code
X = tf.placeholder(tf.float32,shape=[None,14],name='X')
Y = tf.placeholder(tf.float32,shape=[None,1],name='Y')
W1 = tf.Variable(tf.truncated_normal(shape=[14,20],stddev=0.5))
b1 = tf.Variable(tf.zeros([20]))
l1 = tf.nn.relu(tf.matmul(X,W1) + b1)
l1 = tf.nn.dropout(l1,0.5)
W2 = tf.Variable(tf.truncated_normal(shape=[20,20],stddev=0.5))
b2 = tf.Variable(tf.zeros([20]))
l2 = tf.nn.relu(tf.matmul(l1,W2) + b2)
l2 = tf.nn.dropout(l2,0.5)
W3 = tf.Variable(tf.truncated_normal(shape=[20,15],stddev=0.5))
b3 = tf.Variable(tf.zeros([15]))
l3 = tf.nn.relu(tf.matmul(l2,W3) + b3)
l3 = tf.nn.dropout(l3,0.5)
W5 = tf.Variable(tf.truncated_normal(shape=[15,1],stddev=0.5))
b5 = tf.Variable(tf.zeros([1]))
Yhat = tf.matmul(l3,W5) + b5
loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=Yhat, labels=Y))
learning_rate = 0.005
l2_weight = 0.001
learner = tf.train.AdamOptimizer(learning_rate).minimize(loss)
correct_prediction = tf.equal(tf.greater(Y,0.5), tf.greater(Yhat,0.5))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
Danke für den Rat. Es hat das Problem nicht gelöst, aber ich bin mir sicher, dass es mir helfen wird, sobald ich diesen Absturz überwunden habe. – Iinferno1