前言
这篇笔记继续学习
pytorch
的数据预处理方式
transforms
,前三篇笔记学习了
transforms
的使用流程,和各种方法实现。这篇笔记包括两个要点,第一是在已经选好
transform
方法
transform1,transform2,transform3...
,并且都设置好参数数的前提下,如何在
每次迭代的时候选择不同组的
transform
方法或者使用不同的调用顺序
,第二是如何
自定义
transform
方法
,虽然pytorch提供了很多transform方法,但有时可能也需要自己定义。本笔记提供了
在图片上添加椒盐和高斯噪声
的数据增强方法。本笔记的知识框架主要来源于
深度之眼
,并依此作了内容的丰富拓展,拓展内容主要源自对
torch文档
的翻译理解,所用数据来源于网络。
数据预处理方法具体实现见:
transform选择
torchvision.transforms.RandomChoice(transforms)
transforms
是一个由若干预处理方法组成的列表
transforms=[transform1,transform2,transform3,.....]
,该方法就是随机从该列表中随机取一个方法来执行。
transforms.RandomChoice(
[transforms.RandomGrayscale(1), transforms.ColorJitter(hue=0.5), transforms.RandomRotation(60, resample=2)]),
transforms.ToTensor(),
图1.每次读入的图片都从灰度化、变色和旋转中随机选一种方法执行
torchvision.transforms.RandomApply(transforms, p=0.5)
依概率
p
执行
transforms
,并且执行时按照顺序执行其中每一个预处理方法。
transforms
是由若干预处理方法组成的
list
或者是
tuple
。
transforms.RandomApply([transforms.Pad(50, fill=(100, 130, 110)), transforms.RandomAffine(degrees=0, shear