1. 程式人生 > >tensorflow tf.softmax_cross_entropy相關問題

tensorflow tf.softmax_cross_entropy相關問題

output = tf.constant([1., 3., 2.])
output_ = tf.nn.softmax(output)
y = tf.constant([1., 3., 2.])


loss1 = tf.losses.softmax_cross_entropy(y, output)

loss2 = -tf.reduce_sum(y * tf.log(output_))
print(loss1)
print(loss2)

#tf.Tensor(6.4456363, shape=(), dtype=float32)
#tf.Tensor(6.4456363, shape=(), dtype=float32)

可以從上面簡單的程式碼看出tf.softmax_cross_entropy是先將out進行類似softmax(為什麼是類似知乎上有一定說明,但是這裡實際呼叫的是softmax_cross_entropy_with_logits_v2(tf 1.9),跟softmax_cross_entropy_with_logits應該並無太大差別,這裡沒有深究)的操作,然後再進行cross entropy的操作。

問題:今天發現訓練的模型train loss一直不動,發現是我的tf.losses.softmax_cross_entropy(y, output)兩個引數寫反。