从零学习pytorch 第4课 初见transforms

课程目录(在更新,喜欢加个关注点个赞呗):
从零学习pytorch 第1课 搭建一个超简单的网络
从零学习pytorch 第1.5课 训练集、验证集和测试集的作用
从零学习pytorch 第2课 Dataset类
从零学习pytorch 第3课 DataLoader类运行过程
从零学习pytorch 第4课 初见transforms
从零学习pytorch 第5课 PyTorch模型搭建三要素
从零学习pytorch 第5.5课 Resnet34为例学习nn.Sequential和模型定义
从零学习PyTorch 第6课 权值初始化
从零学习PyTorch 第7课 模型Finetune与预训练模型
从零学习PyTorch 第8课 PyTorch优化器基类Optimier
实际应用过程中,我们会在数据进入模型之前进行一些预处理,例如数据中心化(仅仅减去均值),数据标准化(减均值再除以标准差),随机剪裁,旋转一定角度,镜像等一系列操作。下面介绍一下这些方法。

import torchvision.transforms as transforms
normMean = [0.49,0.48,0.44]
normStd = [0.24,0.24,0.256]
normTransform = transforms.Normalize(normMean,normStd)
trainTransform = transforms.Compose([
	transforms.Resize(32),
	transforms.RandomCrop(32,padding=4),
	transforms.ToTensor(),
	normTransform
])
validTransform = transforms.Compose([
	tramsforms.ToTensor(),
	normTransform
])

前三行设置了均值,标准差,以及数据标准化:transform.Normalisze()函数,这是以通道单位计算的。就是RGB三个通道。然后用transform.Compose将所需要进行的处理给包起来,注意处理的顺序。

上面代码中,在训练的时候,一次对图像进行一下操作:

  1. 随机剪裁randomCrop
  2. ToTensor
  3. 数据标准化

1 随机剪裁

transforms.RandomCrop(32,padding=4)

在剪裁之前,先对图片的上下左右填充padding 4个pixel,值为0,变成一个4040的数据,然后再随机进行3232的剪裁
在这里插入图片描述

2 ToTensor

这里会对图像数据的矩阵进行转置,之前是heightwidthc,现在会变成cheightwidth(c是啥单词我忘记了。。)有一个这样的步骤:
img = img.transpose(0, 1).transpose(0, 2).contiguous(),
转置之后再除以255,使得像素归一化到[0,1]之间。
在这里插入图片描述

标准化

减去均值,除以标准差。

在这里插入图片描述

发布了78 篇原创文章 · 获赞 14 · 访问量 9735

猜你喜欢

转载自blog.csdn.net/qq_34107425/article/details/104101513
今日推荐