在 Torch 中修改 ClassNLLCriterion

Modifying ClassNLLCriterion in Torch

我是 Torch 的新手,我想在 Torch 中创建一个自定义损失函数,它是 ClassNLLCriterion 的修改版。具体来说,ClassNLLCriterion loss为:

loss(x, class) = -x[class]

我想修改为:

loss(x, class) = -x[class] + F(x)

其中 F(x) 是一个在 table 中查找 x(作为键)并输出其值的函数。

我的问题是,实施此自定义标准的正确方法是什么? updateOutput()功能看似简单,但是updateGradInput()功能如何实现呢?

如果F(x)对于网络参数是不可微的,那么你不能在损失函数中使用它。可微性是在反向传播过程中执行梯度下降的必要条件。参见 Non-smooth and non-differentiable customized loss function tensorflow