使用数据增强加迁移学习处理CIFAR10数据集

只是用卷积网络对CIFAR10数据集进行处理很难取得良好的效果,一味的增加网络深度会使得数据计算量大幅增加,很容易产生过拟合现象。所以我们使用数据增强和迁移学习的方法对数据集进行处理。

1 数据增强

在对图像进行处理时,增加样本数据会减小过拟合现象的影响。但是我们继续采集样本又是一件费时费力的事情,所以我们对原来的数据进行变换,在不改变图像属性的前提下增加数据量。具体代码如下:

transforms.RandomResizedCrop(size=256, scale=(0.8, 1.0)), # 将原始图像resize
transforms.RandomRotation(degrees=15),# 将图像在-15-15之间随机旋转
transforms.ColorJitter(),# 修改修改亮度、对比度和饱和度
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(), # 依概率将图像水平翻转 概率默认为0.5

通过以上代码我们对训练数据中的图像进行剪裁,旋转,修改亮度,对比度和饱和度,并做随机水平翻转。

2 迁移学习

这里我们使用Resnet18网络预训练参数

# 使用预训练的模型
net = models.resnet18(pretrained=True)
# 将最后的全连接层改成十分类
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
net.fc = nn.Linear(512, 10)
#net = torch.nn.DataParallel(net)
net.to(device)

将resnet18网络的最后的全连接层改为10分类,并使用GPU进行训练。注意这里我们并没有锁住Resnet18中的参数,也就是说在梯度下降进行更新参数时是会更新Resnet18网络中的参数的。
在使用数据增强加迁移学习的条件下,仅仅20个epoch就达到了训练集正确率0.828800,测试集正确率为0.938300。可见迁移学习的强大。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值