介绍说是 MixSoftmaxCrossEntropyLoss
就是 SoftmaxCrossEntropyLoss2D with Auxiliary Loss,但事实上感觉不止于此。
_aux_forward
和 _aux_mixup_forward
的区别在于,_aux_forward
计算 Loss 是调用的 SoftmaxCrossEntropyLoss
,而 _aux_mixup_forward
调用的是 _mixup_forward
。那么 _mixup_forward
同普通的 SoftmaxCrossEntropyLoss
有什么区别呢?
_mixup_forward
中的 label1
和 label2
分别指什么? 这里的 mixup 是指 mixup: Beyond Empirical Risk Minimization 这篇论文里的内容。目标检测任务的优化策略 tricks 中有很形象的插图说明。
__init__
- 这里面是没有
self._axis
那么应该是以**kwargs
在父类也就是SoftmaxCrossEntropyLoss
中初始化了,问题在于SoftmaxCrossEntropyLoss
中也没有self._axis
这一项,在SoftmaxCrossEntropyLoss
的父类Loss
中也只有self._batch_axis = batch_axis
这一项,而没有self._axis
所以真的很奇怪
- 这里面是没有
_mixup_forward
-
if not self._from_logits: pred = F.log_softmax(pred, self._axis)
- 我感觉这个代码有点问题就是
self._from_logits
也没有定义,但默认应该是 False - self.axis 默认是 -1,我认为也是不对的,应该同
SoftmaxCrossEntropyLoss
一样,这里的 self.axis 是 self._batch_axis 才对,数值则应该是 1
- 我感觉这个代码有点问题就是
-