pytorch识别CIFAR10:训练ResNet-34(数据增强,准确率提升到92.6%)

通过在CIFAR10数据集上使用ResNet-34网络,并进行数据增强(图像填充、随机裁剪和水平翻转),训练150个epoch后,模型准确率提升至92.6%。数据增强有效提高了模型的泛化能力。

版权声明:本文为博主原创文章,欢迎转载,并请注明出处。联系方式:460356155@qq.com

在前一篇中的ResNet-34残差网络,经过减小卷积核训练准确率提升到85%。

这里对训练数据集做数据增强:

1、对原始32*32图像四周各填充4个0像素(40*40),然后随机裁剪成32*32。

2、按0.5的概率水平翻转图片。

代码具体修改如下:

 1     transform_train = transforms.Compose([
 2         # 对原始32*32图像四周各填充4个0像素(40*40),然后随机裁剪成32*32
 3         transforms.RandomCrop(32, padding=4),
 4 
 5         # 按0.5的概率水平翻转图片
 6         transforms.RandomHorizontalFlip(),
 7 
 8         transforms.ToTensor(),
 9         transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])])
10 
11     transform_test = tv.transforms.Compose([
12         transforms.ToTensor(),
13         transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])])
14 
15     # 定义数据集
16     train_data = tv.datasets.CIFAR10(root=ROOT, train=True, download=True, transform=transform_train)
17     test_data = tv.datasets.CIFAR10(root=ROOT, train=False, download=False, transform=transform_test)

从前面网络训练准确率的变化看,训练不到100个迭代准确率基本就稳定不变,因此这里只训练150个epoch。

运行结果如下:

Files already downloaded and verified
ResNet34(
  (first): Sequential(
    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (2): ReLU(inplace)
    (3): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值