【对抗样本】【FGSM】Explaining and Harnessing Adversarial Examples 代码复现

简介

参考Pytorch官方的代码Adversarial Example Generation

参数设置(main.py)

# 模型选择:GPU
device = 'mps' if torch.backends.mps.is_available() else 'cpu'
# 数据集位置
dataset_path = '../../../Datasets'
batch_size = 1
shuffle = True
download = False
# 学习率
learning_rate = 0.001
# 预训练模型位置
model_path = "../../../Pretrained_models/Model/MNISTModel_9.pth"

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,), (0.3081,)),
    transforms.Grayscale(),
])
# 扰动参数
epsilons = [0, .05, .1, .15, .2, .25, .3]
  • device:用于选择训练设备,本人是mac m1的电脑,所以使用mps训练
  • dataset_path:指定数据集路径
  • batch_size:用于DataLoader,判断每次抓取数据的数量
  • shuffle:用于DataLoader,判断是否洗牌
  • download:判断数据集是否下载
  • learning_rate:设置学习率
  • model_path:指定预训练模型路径
  • transform:指定数据集转化规则,用于对数据集中输入的图像进行预处理
    • ToTensor:转化为Tensor数据类型,同时将图片进行归一化
    • Normalize:正则化
    • Grayscale:转化为灰度图像
  • epsilons:设置扰动参数,用于测试不同扰动的对抗样本的正确率
    在这里插入图片描述

对抗样本代码主流程(main.py)

因为习惯了C++的语法,还是喜欢定义main函数,比较直观哈哈哈哈哈
主要分为三步

  1. 对数据的生成与预处理
if __name__ == '__main__':
    # 1.预处理
    train_dataset = datasets.MNIST(dataset_path, train=True, download=download, transform=transform)
    val_dataset = datasets.MNIST(dataset_path, train=False, download=download, transform=transform)

    train_DataLoader = DataLoader(train_dataset, batch_size=batch_size, shuffle=shuffle)
    val_DataLoader = DataLoader(val_dataset, batch_size=batch_size, shuffle=shuffle)

    model = torch.load(model_path).to(device)
  • 数据集生成
  • DataLoader 生成
  • 预训练模型加载
  1. 开始测试
    # 2.开始测试
    # 记录不同扰动下的准确度
    accuracies = []
    # 记录样本
    examples = []

    # 对每个epsilon运行测试
    for eps in epsilons:
        # 进行对抗样本攻击
        acc, ex = test(model, device, val_DataLoader, eps)
        
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值