我想重现:
来自论文https://arxiv.org/pdf/1312.6199.pdf。我想知道,如何在pytorch中真正实现这一点?我的主要困惑是,例如,对于loss_f
,我使用的是torch.nn.CrossEntropy()
标准。我是否只需要从以下位置更改已有的代码:
loss = criterion(outputs+r, labels)
loss.backward()
至:
loss = criterion(outputs+r, labels)
loss = loss + c * r.norm(2)
loss.backward()
或者类似的东西(当然要在优化器中包括r!)。我知道这不太正确,因为我没有显式地展示我是如何实现x+r
或超立方体约束的,但这些都是我需要弄清楚的部分。
我想现在我想先把焦点放在没有超立方体的约束下。如果我们假设我可以出去,那么上面的结论是正确的吗?我只想知道:
loss = loss + c * r.norm(2)
按其应有的方式工作。
现在,如果我们包含超立方体约束,我的解将如何改变?这是“惩罚函数法”的出现吗?
https://discuss.pytorch.org/t/how-does-one-implement-adversarial-examples-in-pytorch/15668
https://stackoverflow.com/questions/49951492
复制相似问题