2017-10-19 127 views
1

由於隱藏tf.nn.softmax_cross_entropy_with_logitsgen_nn_ops的源代碼,任何人都可能解釋我tensorflow如何計算Softmax後的交叉熵。我的意思是,在softmax之後,它可能會輸出0,因爲精度會導致交叉熵產生NaN問題。當softmax限制它的輸出時,tensorflow是否使用clip方法?tensorflow softmax_cross_entropy代碼

回答

0

tf.nn.softmax_cross_entropy_with_logits的實現進一步轉向本地C++代碼,here是XLA實現。如果其中一個logits比其他logits大,則可以使用0。例如:

>>> session.run(tf.nn.softmax([10.0, 50.0, 100.0, 200.0])) 
array([ 0., 0., 0., 1.], dtype=float32) 

如果你願意,你可以在之前添加Softmax剪輯logits,但不推薦,因爲它殺死的漸變時產量大。更好的選擇是使用batch normalization使激活更像正態分佈。

相關問題