我是Torch的新手,我想在Torch中创建一个自定义丢失函数,它是ClassNLLCriterion的修改。具体而言,ClassNLLCriterion损失是:
loss(x, class) = -x[class]
我想将其修改为:
loss(x, class) = -x[class] + F(x)
其中F(x)
是一个在表(作为键)中查找x
并输出其值的函数。
我的问题是,实施此自定义标准的正确方法是什么? updateOutput()
函数似乎很简单,但如何实现updateGradInput()
函数?
答案 0 :(得分:0)
如果F(x)
在网络参数方面无法区分,则您无法在损失函数中使用它。可分性是在反向传播期间执行梯度下降的必要条件。请参阅Non-smooth and non-differentiable customized loss function tensorflow。