我想根据训练期间“正确标签”的“当前预测”的近/远程度来缩放每幅图像的损失值。例如,如果正确的标签是“猫”,并且网络认为它是“狗”,则如果网络认为它是“汽车”,则处罚(损失)应该小于该情况。根据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