21.数据增强

big data

防止过度拟合的关键
网络参数量越来越大,网络的表达能力越来越强,如果要train一个很好的性能,我们需要大的数据集,big data。

limited data

对有限的数据进行优化:

small network capacity

减小网络的参数量,网络不容易过度拟合。网络结构固定,可以使网络的一部分权值为0,达到减小参数量的目的。

regularization

data argumentation

对原来的数据进行多样化处理,例如拍摄稀有动物的照片,对拍摄到的少量的图片进行旋转、调色、加噪声等操作,可得到更大的数据集。

常用的数据增强手段

都在torchvision中,对图片的处理都在视觉领域。compose功能类似于nn.Sequential,把一系列功能打包在一起使用。

flip翻转

train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('mnist_data', train=True, download=True,
                               transform=torchvision.transforms.Compose([
                                   transform.RandomHorizontalFlip(),
                                   transform.RamdomVerticalFlip(),
                                   transforms.ToTensor(),
                               ])),
    batch_size=batch_size, shuffle=True)

图片按照transform里的顺序进行
RandomHorizonFlip水平角度翻转,random指的是这一步不一定进行,增加了随机性。
RandomVerticalFlip是竖直角度翻转。

rotate旋转

更加通用

train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('mnist_data', train=True, download=True,
                               transform=torchvision.transforms.Compose([
                                   transform.RandomHorizontalFlip(),
                                   transform.RamdomVerticalFlip(),
                                   transform.RandomRotation(15),
                                   transform.RandomRotation([90,180,270]),
                                   transforms.ToTensor(),
                               ])),
    batch_size=batch_size, shuffle=True)

第一种,旋转某个角度,参数x即翻转-x到x内进行翻转操作。
第二种,固定角度翻转,[90,180,270]随机的在这三个数中挑一个数进行旋转。

scale缩放

在中心店往外进行缩放

train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('mnist_data', train=True, download=True,
                               transform=torchvision.transforms.Compose([
                                   transform.RandomHorizontalFlip(),
                                   transform.RamdomVerticalFlip(),
                                   transform.RandomRotation(15),
                                   transform.RandomRotation([90,180,270]),
                                   transform.Resize([32,32])
                                   transforms.ToTensor(),
                               ])),
    batch_size=batch_size, shuffle=True)

把原图片缩放到32×32。

crop part裁剪部分

随机裁剪一部分,剩下部分填充空白。

transform.RandomCrop([2828]

noise

增加一些噪声,pytorch中并没有直接借口,需要人为的在numpy中添加。也可以使用torch中提供的高斯分布等叠加到上面。

GAN

可生成更多的样本

特点

无穷多的照片和原来的照片的分布非常接近,variance非常的小,所以即使得到无穷多的照片进行train时,performance只会比原来的数据好一点,不会好很多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值