2017-10-19 12 views
1

ソースコードtf.nn.softmax_cross_entropy_with_logitsgen_nn_opsであるため、ソフトマックスの後のテンソルフローがクロスエントロピーをどのように計算するかは誰にも分かりません。ソフトマックスの後では、クロスエントロピーでNaN問題を引き起こす精度のため、0を出力する可能性があります。テンソルフローは、softmaxが出力をバインドするときにクリップメソッドを使用しましたか?テンソルフローsoftmax_cross_entropyコード

答えて

0

tf.nn.softmax_cross_entropy_with_logitsの実装はネイティブのC++コードになります。hereはXLA実装です。ログのいずれかが他のログよりもはるかに大きい場合、ログはバインドされず、0が可能です。例:

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

ご希望の場合は、あなただけのソフトマックスの前にlogitsをクリップすることができますが、出力が大きい場合には、勾配を殺すために、それは、お勧めしません。より良い選択肢は、batch normalizationを使用して、正規分布に近いようにアクティブ化を行うことです。

関連する問題