我想根據訓練期間「正確標籤」的「當前預測」的近/遠程度來縮放每幅圖像的損失值。例如,如果正確的標籤是「貓」,並且網絡認爲它是「狗」,則如果網絡認爲它是「汽車」,則處罰(損失)應該小於該情況。根據caffe中的「不良」縮放損失值
,我做的方式是如下:
1-我所定義的標記物之間的距離的矩陣,
2-通該矩陣作爲一個底部到"softmaxWithLoss"
層,
3-乘以每個日誌(概率),以此值按比例縮放損失forward_cpu
但是,我不知道我應該怎麼做在backward_cpu
部分。我知道漸變(bottom_diff)必須改變,但不太確定,如何在這裏合併比例值。根據數學,我必須按比例縮放梯度(因爲它只是一個比例),但不知道如何。
而且,好像有loosLayer在朱古力稱爲"InfoGainLoss"
如果我沒有記錯的話,做非常類似的工作,然而,這層的向後部分是有點混亂:
bottom_diff[i * dim + j] = scale * infogain_mat[label * dim + j]/prob;
我不知道爲什麼infogain_mat[]
除以prob
而不是乘以!如果我使用身份矩陣infogain_mat
是不是應該像softmax在向前和向後方面的損失一樣?
如果有人能給我一些建議,我們將非常感謝。
衍生產品應該是'dL/dprob(j)= - infogain_mat [label * dim + j]/prob(j)'。 – nn0p
@ nn0p嗯...謝謝! – Shai