0
我想在Torch中創建一個自定義丟失函數,這是對ClassNLLCriterion的修改。具體而言,ClassNLLCriterion損耗是:修改火炬標準
loss(x, class) = -x[class]
我想修改這是:
loss(x, class) = -x[class]*K
其中K
是網絡輸入的功能,而不是網絡權重或網絡輸出。因此K
可以被視爲一個常數。
什麼是實現此自定義條件的最簡單的方法? updateOutput()
函數看起來很簡單,但我該如何修改updateGradInput()
函數?
所以基本上我不必編寫自定義標準。在我的訓練碼中,我可以簡單地做: 'loss = ClassNLLCriterion:forward()* K'然後 'grad = ClassNLLCriterion:backward()* K + loss *(dK/dinput)' 這是正確的嗎? – braindead
是的,這也是可能的 – fonfonx
太棒了。謝謝!還有一個問題,如果K只是一個常量(不依賴於網絡參數或輸入或輸出),那麼在這種情況下你的答案會如何變化? – braindead