トレーニング中に「正しいラベル」に対する「現在の予測」がどの程度近いか遠いかに基づいて各画像の損失値をスケールします。例えば、正しいラベルが "cat"でネットワークが "dog"であると判断した場合、ネットワークが "car"と判断した場合、ペナルティ(loss)はケースよりも小さくなるはずです。 、Iは"softmaxWithLoss"
層の底部のようなマトリックスラベル間の距離の行列、
2-パスを定義caffeの「badness」に基づいて損失値を調整します
1-
3-:
私がやっている方法は、以下の通りであります
しかし、私はbackward_cpu
の部分で何をすべきか分かりません。私はグラデーション(bottom_diff)を変更しなければならないとはっきりしていないこと、スケール値をここに組み込む方法を理解しています。数学によると、私は尺度で勾配をスケールする必要があります(それは単なる尺度なので)。
また、カフェでloosLayerは私が間違っていないよ場合に非常に類似した仕事をしていません"InfoGainLoss"
と呼ばれる存在であるように思える、しかし、この層の後方部分が少し紛らわしいです:
bottom_diff[i * dim + j] = scale * infogain_mat[label * dim + j]/prob;
私がなぜわかりませんinfogain_mat[]
は、で乗算されるのではなく、prob
で除算されます。 infogain_mat
の単位行列を使用すると、前方と後方の両方でsoftmaxの損失のように動作するはずですか?
誰かが私に指針を与えることができれば幸いです。あなたはlog(prob)
のためにやっているスケーリングすることを観察することで正しい
、4月に枝を習得するためにマージされました。 – nn0p
@ nn0p mmm ...ありがとう! – Shai