pytochの交差エントロピー損失出力がマイナスの問題を解決します。


ネットの訓練の中で、loss曲線はとても奇怪です。

交差エントロピーはどうして負の数がありますか?
並べて調べたら、交差エントロピーは負の対数があるのではないですか?ネットワーク出力の確率は0-1の時、正数です。ネットワーク出力が1より大きい場合、マイナスになる可能性があります。
だからもう一つだけつければいいです。
out 1=F.softmax(out 1,dim=1)
知識を補充します:pytouchフレームの下で、modelを訓練する過程の中で、loss=nan問題の時はどのように解決しますか?
私はUCF-101のデータセットでalexnetを訓練しています。epochは100に設定して、30数個のepochに走っています。loss=nan問題が発生しました。当時は無頓着で、資料を調べた後、学習率を減らすことで問題を解決しました。この問題が発生する可能性のある原因と解決方法をまとめます。
1.全体の学習率を減らす。学習率が大きい時、パラメータはover shotかもしれません。結果的に極小点が見つけられません。小学校の学習率を減らしてパラメータを極値点に向かって前進させることができます。
2.ネットワークの幅を変更します。ネットワークの後ろの層パラメータの更新に異常がある可能性があります。後ろの層の幅を増やしてみてください。
3.層の学習率を変える。それぞれの層に学習率を設定することができます。後ろの層の学習率を減らす試みができます。
4.データ正規化(分散を除いて、またはnormalzationに加入する、例えばBN、L 2 normなど);
5.gradient clippingに加入する;
6入力データには汚いデータが含まれています。つまりNaNです。実際の業務のデータを使うと、汚れたデータが出やすくなります。
以上のpytouchの交差エントロピー損失の出力がマイナスの問題を解決しました。小編集は皆さんに全部の内容を共有しました。参考にしていただければ幸いです。どうぞよろしくお願いします。