Closed tangtaogo closed 3 years ago
对的,这个代码只支持unrolled=True。unrolled=False是不支持的,论文中一阶梯度是没有定义的,实际上使用一阶梯度也是不合理的。
好哒,感谢
按照作者现在的code,更新architecture parameters的时候就会没有关于ops weight和probabilities的梯度(因为这两个是通过sample得到的),而magnitude不一样所以有梯度也就可以更新,因为看起来code里每次augmentation都是离散的,没有用softmax给relax成连续的啊?这跟论文里说的是不是不一致?
因为使用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()