Skip to content

Instantly share code, notes, and snippets.

@YimianDai
Last active July 29, 2019 23:28
Show Gist options
  • Save YimianDai/0f9a9c3349c8128d738708c606d6d8ea to your computer and use it in GitHub Desktop.
Save YimianDai/0f9a9c3349c8128d738708c606d6d8ea to your computer and use it in GitHub Desktop.
MixSoftmaxCrossEntropyLoss

MixSoftmaxCrossEntropyLoss

介绍说是 MixSoftmaxCrossEntropyLoss 就是 SoftmaxCrossEntropyLoss2D with Auxiliary Loss,但事实上感觉不止于此。

_aux_forward_aux_mixup_forward 的区别在于,_aux_forward 计算 Loss 是调用的 SoftmaxCrossEntropyLoss,而 _aux_mixup_forward 调用的是 _mixup_forward。那么 _mixup_forward 同普通的 SoftmaxCrossEntropyLoss 有什么区别呢?

_mixup_forward 中的 label1label2 分别指什么? 这里的 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

Reference

  1. mixup: Beyond Empirical Risk Minimization
  2. 如何评价 mixup: BEYOND EMPIRICAL RISK MINIMIZATION?
  3. 目标检测中图像增强,mixup 如何操作?
  4. mixup 与 paring samples ,ICLR2018 投稿论文的数据增广两种方式
  5. Bag of Tricks for Convolutional Neural Networks
  6. 目标检测任务的优化策略 tricks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment