前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch小技巧-数据增强(上)

Pytorch小技巧-数据增强(上)

作者头像
用户6719124
发布2019-12-05 15:30:38
2.1K0
发布2019-12-05 15:30:38
举报
文章被收录于专栏:python pytorch AI机器学习实践

目前深度学习神经网络对数据的要求很高,不进数据要相关,且更要有尽可能大的数据集。

那么在现实生活中,想要得到大量的数据,不仅要收集各种情景下、各种角度、各个位置的照片,还有确保数据的多样性。

只有这样才能确保神经网络学到更加全面的特征。

但在现实中若想达到以上目的往往要付出巨大的代价,并且还有对照片上出现的东西进行准确标注,另外对于一些稀有的物种的信息收集更是十分困难。

因此本节介绍一些为神经网络提供更多数据的方法-数据增强。

数据增强有多种手段,包括对原照片进行旋转、拉伸、加噪声等处理。

其实在之前所讲课程中就已经讲了数据增强的方法,

如在数据中加入shuffle=True,将原数据随机打乱,并没有增加照片的数量。但本文所讲的是在原照片数据量较少的情况下进行数据增强,以加入一些经过旋转、拉伸等处理后的图片。

要注意的是采用这种方法加入的数据肯定没有新图片效果好,因为其本质上仍是原图片。

如下图所示

数据增强手段包括有:(1)Flip(图片翻转)、(2)Rotate(旋转)、(3)Random Move & Crop(随机移动、裁剪)、(4)GAN(GAN神经网络)。

首先看数据翻转

如上图所示原图片黄人在右边,经过翻转后黄人在左面,再经过上下翻转后,整个图片倒立。

代码实现方式如下

代码语言:javascript
复制
import torch
import torch.nn
import torch.nn.functional as F

train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('data', train=True, download=True,
                   transform=transforms.Compose([
                       transforms.RandomHorizontalFlip(),
                       # transforms.RandomHorizontalFlip()为水平翻转
                       transforms.RandomVerticalFlip(),
                       # transforms.RandomHorizontalFlip()为上下翻转
                       transforms.ToTensor(),
                   ])),
     batch_size=batch_size, shuffle=True)

旋转操作也十分常见

上面分别经过了90°、180°、270°的旋转。

它的代码实现方 式也十分简单

代码语言:javascript
复制
import torch
import torch.nn
import torch.nn.functional as F

train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('data', train=True, download=True,
                   transform=transforms.Compose([
                       transforms.RandomHorizontalFlip(),
                       # transforms.RandomHorizontalFlip()为水平翻转
                       transforms.RandomVerticalFlip(),
                       # transforms.RandomHorizontalFlip()为上下翻转
                       transforms.RandomRotation(15),
                       # 随机旋转了-15°至15°
                       transforms.ToTensor(),
                       transforms.RandomRotation([90, 180, 270]),
                       # 或者自定义旋转了90°, 180°, 270°
                   ])),
     batch_size=batch_size, shuffle=True)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档