【发布时间】:2016-04-26 17:57:39
【问题描述】:
我想根据训练期间“当前预测”与“正确标签”的接近/远近来缩放每张图像的损失值。例如,如果正确的标签是“猫”并且网络认为它是“狗”,则惩罚(损失)应该小于网络认为它是“汽车”的情况。
我的做法如下:
1- 我定义了标签之间的距离矩阵,
2- 将该矩阵作为底部传递给"softmaxWithLoss" 层,
3- 将每个 log(prob) 乘以该值以根据 forward_cpu 中的 badness 缩放损失
但是我不知道我应该在backward_cpu 部分做什么。我了解必须更改渐变(bottom_diff),但不太确定如何在此处合并比例值。根据数学,我必须按比例缩放渐变(因为它只是一个比例)但不知道如何。
此外,如果我没记错的话,似乎 caffe 中有一个名为 "InfoGainLoss" 的 loosLayer,它的工作非常相似,但是这一层的后部有点令人困惑:
bottom_diff[i * dim + j] = scale * infogain_mat[label * dim + j] / prob;
我不知道为什么infogain_mat[] 被prob 除而不是被乘!如果我对infogain_mat 使用单位矩阵,它不应该在前向和后向都像softmax loss一样吗?
如果有人能给我一些指点,将不胜感激。
【问题讨论】:
标签: neural-network deep-learning caffe conv-neural-network