Pytorch 使用相同的梯度最大化模型的一部分,最小化同一模型的另一部分

Pytorch 使用相同的梯度最大化模型的一部分,最小化同一模型的另一部分,pytorch,gradient,Pytorch,Gradient,我想计算梯度,并使用相同的梯度最小化同一网络的一部分,最大化另一部分(类似于对抗性案例)。对我来说,理想的情况是,如果有两个优化器负责网络/模型的两个部分,并且其中一个优化器的学习率为负。但PyTorch似乎不允许负学习率 在这种情况下,我所做的是: loss.backward() optimzer_for_one_part of the model.step() 然后 (-loss).backward() 问题是,这一次再次计算的梯度将不相同(值不同,但当然会失败),因为相同网络(相同计

我想计算梯度,并使用相同的梯度最小化同一网络的一部分,最大化另一部分(类似于对抗性案例)。对我来说,理想的情况是,如果有两个优化器负责网络/模型的两个部分,并且其中一个优化器的学习率为负。但PyTorch似乎不允许负学习率

在这种情况下,我所做的是:

loss.backward()
optimzer_for_one_part of the model.step() 
然后

(-loss).backward()
问题是,这一次再次计算的梯度将不相同(值不同,但当然会失败),因为相同网络(相同计算图)的某些权重已经改变。但是,理想情况下,我想使用上一个渐变的翻转版本。 我怎样才能做到这一点