Ich möchte Cross-Entropie-Funktion mit dem folgenden Befehl berechnen. Dieser Befehl wendet zuerst sofmax auf die Logits an und wendet dann die Kreuz-Entropiefunktion an. Nach der Formel der Kreuz-Entropiesumme (b * loga) ist b die korrekte Markierung und a ist die vorhergesagte Markierung. Da die Summe aller Klassen in der Kreuz-Entropie-Formel übernommen wird, erwarte ich, dass die Multiplikation so weitergeht. Wenn nach der sofmax Betriebsausgabetf.nn.softmax_cross_entropy_with_logits gibt falsche Ausgabe. Warum?
[0.45186275 0.27406862 0.27406862]
Nun ist, wenn ich Kreuz anwenden Entropie sollte es so sein
(1 * log 0.45186275 + 0 * log 0.27406862 + 0 * log 0.27406862)
Meine Ausgabe ist 0,794377 aber ich erwarte eine andere
a = tf.constant([0.9,0.4,0.4])
b = tf.constant([1,0,0])
result = tf.nn.softmax_cross_entropy_with_logits(logits=a,labels=b)
sess = tf.InteractiveSession()
sess.run(tf.initialize_all_variables())
print result.eval()
Aber (1 * log 0,45186275 + 0 * log 0,27406862 + 0 * 0,27406862 log) nach dieser Multiplikation ich bin 0,344 bekommen weil der Rest des Begriffs Null ist. –
Natürliches Protokoll, nicht Basis zehn. – Wontonimo
Jetzt ist es richtig. Danke –