Part1: 李沐课程 卷积神经网络 部分
《动手学深度学习》之现代卷积神经网络
Part2: AI研习社 “猫狗大战” 比赛
本周在上周学习的基础,继续对猫狗大战进行代码的学习。
- 首先,将VGG网络替换成李沐课程里讲过的ResNet,进行训练,最终提交结果到AI研习社。
1
2
3
4
5
6
7
8
9
10
11class conv_net(nn.Module): def __init__(self): super(conv_net,self).__init__() self.net = nn.Sequential(b1, b2, b3, b4, b5, nn.AdaptiveAvgPool2d((1,1)), nn.Flatten(), nn.Linear(512, 2)) def forward(self,x): x = F.LogSoftmax(self.net(x), dim=1) return x
注:网上资料说,LogSoftmax能够解决函数overflow和underflow,加快运算速度,提高数据稳定性。其中最重要的一点,是适用于损失函数是 NLLLoss() ,原因可以查看博客。如果使用CrossEntropyLoss()损失函数,则使用SoftMax即可。
最终结果:
- 其次,使用ResNet-50跟ResNet-152进行迁移学习。
本次代码,图片处理成 224 × 224 × 3 224times 224 times 3 224×224×3 的大小,同时进行归一化处理,每个batch_size设置成了64,学习率0.001。
在使用ResNet进行迁移学习时,只需要PyTorch加载预训练模型
1
2resnet50 = models.resnet50(pretrained=True)
大多数参数已经训练好了,需要冻结前面层的参数,因此设置 。
1
2requires_grad = False
最后根据自己的任务调整ResNet最后一层即可,由于猫狗大战属于二分类的任务,所以只需要将ResNet的最后一层替换为。
1
2nn.Linear(256, 2)
ResNet50在测试集上,1个epoch准确率能到95.8%,10个epoch能到97.75%。
提交AI研习社的结果如下:
最后
以上就是愉快服饰最近收集整理的关于第四周作业:卷积神经网络(Part2)的全部内容,更多相关第四周作业内容请搜索靠谱客的其他文章。
发表评论 取消回复