对抗训练:通过对抗样本增强模型鲁棒性
FreeGuideOnline
最新
2026-06-21
python for x, y in data_loader: # 生成对抗样本 delta = torch.zeros_like(x, requires_grad=True) for t in range(num_steps): loss = F.cross_entropy(model(x + delta), y) loss.backward() delta.data = (delta + alpha * delta.grad.detach().sign()).clamp(-eps, eps) delta.data = (x + delta).clamp(0, 1) - x # 保持像素有效范围 delta.grad.zero_() # 用对抗样本更新模型 adv_x = (x + delta).detach() output = model(adv_x) loss = F.cross_entropy(output, y) optimizer.zero_grad() loss.backward() optimizer.step()