VDIGPKU / DADA

[ECCV 2020] DADA: Differentiable Automatic Data Augmentation
MIT License
189 stars 30 forks source link

use one-step unrolled validation loss #23

Closed tangtaogo closed 3 years ago

tangtaogo commented 3 years ago

因为使用one-step unrolled validation loss,就是设置unrolled = Ture的时候,需要new_model去获得虚拟的梯度,内存太大了,所以我直接使用unrolled=False,但是这样的话,就只会更新magnitude,不会更新weight和probabilities,这个地方是不是代码写的有问题 def _backward_step(self, input_valid, target_valid): loss = self.model._loss(input_valid, target_valid) loss.backward()

latstars commented 3 years ago

对的,这个代码只支持unrolled=True。unrolled=False是不支持的,论文中一阶梯度是没有定义的,实际上使用一阶梯度也是不合理的。

tangtaogo commented 3 years ago

好哒,感谢

Euphoria16 commented 3 years ago

按照作者现在的code,更新architecture parameters的时候就会没有关于ops weight和probabilities的梯度(因为这两个是通过sample得到的),而magnitude不一样所以有梯度也就可以更新,因为看起来code里每次augmentation都是离散的,没有用softmax给relax成连续的啊?这跟论文里说的是不是不一致?