3月27日毕设准备
今天继续看代码发现,引用的就是resnet18,下载的参数也是resnet18的参数。
1、model = nn.Sequential(
norm_layer,
models.resnet18(pretrained=True)
).to(device)
2、labels = labels.to(device)
这种.to是把代码放入到哪个设备,这里是放入了GPU。
_, pre = torch.max(outputs.data, 1)
这句代码是通过pre把最大值所在的那个张量中位置是第几个给输出书来,前面的_是最大值是多少,这里我们对这个没有要求,我们只需要知道最大值对应那个种类即可。
之前没有鲁棒性为100%是因为,我在改代码时候改了原始的读取数据的代码。
imagnet_data = image_folder_custom_label(root='/home/zcy/image', transform=transform)
data_loader = torch.utils.data.DataLoader(imagnet_data, batch_size=1, shuffle=False)
这里面由于没有办法引用image_folder_custom_label但我又用了
from torchvision.datasets import ImageFolder as image_folder_custom_label
这样的方式来对数据进行读取,所以造成读取的label都是0,但是正确的是388的gaint_panda。
0!=388所以我们没有测试鲁棒性为100%。所以要写个函数,让ImageFolder读取的文件夹名字可以转换成正确的388。然后学习怎样用pytorch进行对抗训练。(用这个代码把对抗样本生成,弄成数据集,先进行对抗攻击,再对抗训练,再对抗攻击即可。)
需要解决问题:
1、制作数据集
2、批量生存对抗样本
3、编写实现文件夹名字转换成label的函数
4、对抗训练(耗时可能很长,需要尽快实现)
5、编写对抗攻击的准确率统计函数。
6、学会用pytroch搭建几个典型模型。
7、学会下载模型已有参数(已下在/root/.cache/torch/hub/checkpoints/里一个)