为了使网络的性能增强,一个很常见的方法或者说途径就是增大数据集,本篇介绍一种最大化利用已有数据集的方法–数据增强

一、可选优化方法

  对于数据有限这一不可避免的事实,我们可以:

  • 减少网络参数量
  • Regularization
  • 数据增强

二、数据增强

图片描述

  1. Flip
    train_loader = torch.utils.data.DataLoader(
     datasets.MNIST('../data', train=True, download=True,
                    transform=transforms.Compose([
                        # 随机性保证不是所有的图片都做此操作
                        transforms.RandomHorizontalFlip(),
                        transforms.RandomVerticalFlip(),
                        transforms.ToTensor(),
                        # transforms.Normalize((0.1307,), (0.3081,))
                    ])),
     batch_size=batch_size, shuffle=True)
    
  2. Rotate
    train_loader = torch.utils.data.DataLoader(
     datasets.MNIST('../data', train=True, download=True,
                    transform=transforms.Compose([
                        # 旋转角度-15°~15°
                        transforms.RandomRotation(15),
                        # 指定旋转角度
                        transforms.RandomRotation([90, 180, 270]),
                        transforms.ToTensor(),
                        # transforms.Normalize((0.1307,), (0.3081,))
                    ])),
     batch_size=batch_size, shuffle=True)
    
  3. Random Move & Crop
    train_loader = torch.utils.data.DataLoader(
     datasets.MNIST('../data', train=True, download=True,
                    transform=transforms.Compose([
                        transforms.Resize([32, 32]),
                        # 随机裁剪
                        transforms.RandomCrop([28, 28]),
                        transforms.ToTensor(),
                        # transforms.Normalize((0.1307,), (0.3081,))
                    ])),
     batch_size=batch_size, shuffle=True)
    
  4. GAN