打印生成的前10个对抗性示例的图像 if predicted != labels and count < 10: plt.imshow(pert_image.squeeze(0).cpu().numpy().reshape(28, 28), cmap='gray') plt.show() count += 1将其修改为在一张图片上打印十张不同的对抗性样本
时间: 2023-06-11 11:08:45 浏览: 62
可以通过使用 subplot 函数将十张不同的对抗性样本绘制在同一张图片上。以下是修改后的代码:
```
import matplotlib.pyplot as plt
# 将图片划分为 10 行 10 列的子图
fig, axs = plt.subplots(10, 10, figsize=(10, 10))
# 循环生成对抗性样本
count = 0
for i in range(10):
for j in range(10):
# 生成对抗性样本
pert_image = fgsm_attack(image, epsilon, model)
pert_label = torch.argmax(model(pert_image), 1)
# 如果预测结果与标签不一致,则绘制该对抗性样本
if pert_label != label:
axs[i][j].imshow(pert_image.squeeze(0).cpu().numpy().reshape(28, 28), cmap='gray')
axs[i][j].axis('off')
count += 1
# 如果已经绘制了十张对抗性样本,则退出循环
if count >= 10:
break
if count >= 10:
break
plt.show()
```
运行以上代码,将会在一张图片上绘制十张不同的对抗性样本。