PyTorch入门实战教程笔记(二十二):卷积神经网络CNN 4

PyTorch入门实战教程笔记(二十二):卷积神经网络CNN 4

数据增强

Data argumentation,Big Data 能够使网strain的很好,并且可以有效地防止过拟合。但是现实生活中对于照片的获得不太容易,并且还要对照片进行标注(打label)。如何解决神经网络对数据的需求,是一种挑战,使用数据增强能够解决这个挑战。如果现在对于有限的数据,可以进行Small network capacity,Regularzation,Data argumentation(旋转、裁剪、调色、加噪声等等)等来优化网络。
常用的数据增强的方法:Flip(翻转),Rotate(旋转),Random Move && Crop(随机平移/裁剪)、GAN(生成对抗网络)。
在这里插入图片描述

  1. Flip(翻转)
    翻转操作的pytorch实现,.RandomHorizontalFlip()水平角度的翻转,.RandomVerticalFlip()竖直方向的翻转,因为它是random,意味着把这个操作写到transform以后,然后会对图片的每一个图片做一个transform,如果没有Random,那就会先水平翻转,再竖直翻转,在转换成tensor数据(如果有Normalize的话,就做一次标准化)。这样的话,其实图片还是没变化的,所以有Random,也就是水平翻转或者竖直翻转,可能做, 也可能不做,这样能够使数据多样化,达到数据增强的效果。
    在这里插入图片描述
  2. Rotate(旋转)
    旋转操作的pytorch实现,.RandomRotation(),参数为旋转角度,比如15,那就是随机从(-15°,15°)范围内旋转,如果要固定这个角度,就传入list数据,如[0, 90, 180, 270],它会随机的在这三个角度中挑一个,随机旋转。
    在这里插入图片描述
  3. Scale(缩放)
    缩放操作的pytorch实现,我们调用 .Resize( [32, 32] ),就可以把原来的[28, 28]放大到 [32, 32]. 需要注意传入参数为list。
    在这里插入图片描述
  4. Crop Part (裁剪部分)
    随机裁剪在实践中用的更多一点,具体的实现: 调用 .RandomCrop( [28,28] )即可随机裁剪所需要的照片的大小。我们将随机旋转和随机裁剪结合起来,能够进一步达到数据增强的目的。
    在这里插入图片描述
    这些操作都是在transforms里面实现的,transforms是torchvision这个包提供的,并且还有一个transforms.Compose(),与nn.Module里面的nn.Sequential()操作类似,将一系列的transforms打包到一块,然后传进去一个list,一次过完就可以啦。直接调用transforms(x),就可以将x传进去,直接实现里面的一些列操作。
    此外,需要强调的是,虽然数据增强理论上可以变化无数多的照片,但是变换幅度(variance)还是很小的,也不会接近于无数的真实的照片。也就是说,Data argumentation虽然有帮助,但是不会帮助太多。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值