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