pytorch中的torchvision.transforms的用法

我们在训练模型时,一般会先进行基本数据预处理过程,防止数据在训练时出现数据个体差异的错误,也能更好降低误识别率,最后还有就是能够加速模型收敛,配合梯度下降算法能更快速地找到最优解(较好的模型)。

torchvision.transforms就是用于对数据集或者测试集等数据的预处理主要手段。

一般数据的预处理并非只需要简单地进行一项操作,我们可能需要进行多种操作,设计者也考虑到这种情况,所以我们可以用其中的compose(),具体例子如下:

import torchvision

transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor(),
                                   torchvision.transforms.Normalize((0.5,), (0.5,)),
                                   ])

这里的compose()添加的是列表“[ ]”,很方便删减,我这里就用了ToTensor()和Normalize(),如果你们想做其他操作也是有的。我所用的这两个就是最常见的两种预处理手段.

ToTensor(),官方解释,用于转换PIL Image(显示图像)或numpy(数值)。传入的参数一般为(H x W x C)在[0,255]的图像范围内。如果PIL Image属于一个模式(L, LA, P, I, F, RGB, YCbCr, RGBA, CMYK, 1)或numpy,最终输出的形状(C x H x W)在[0.0,1.0]范围内。传入的数据类型一般为 np.uint8。在其他情况下,张量返回时不进行缩放。

ToTensor()就是将输入的张量初始化为0到1之间,就是常见的归一化数据处理,不管是对于输入的数据是0-255的图像还是其他数据都具有很高的普适性,强烈推荐要会用这个。

Normalize( mean(int/tuple) , std(int/tuple) ),这里的用法就是实现均值中心化和正则化的过程,不一定就是说使得数据变成-1到1之间,就是在中心化的同时进行了简单的正则化,为了使得模型更容易趋于收敛,在训练出最佳模型时,可以在一定程度减少了训练迭代的次数。Normalize()原理等同于以下例子的代码,mean求平均值,std就是方差。。

x_mean,x_std=torch.mean(x,),torch.std(x,)
x_norm=(x-x_mean)/x_std
y_mean, y_std = torch.mean(y, ), torch.std(y, )
y_norm = (y - y_mean) / y_std

为了不让你们头大我把transform能调用的自定义函数都放下面了,需要的,可以自行查看用法,实在太多就不一一介绍了,总之,预处理的必要性,懂的都懂,但transform封装的功能是真的强大,之前不懂的,现在要知道了,别傻傻地自己写处理函数了,哈哈哈哈。

"Compose", "ToTensor", "PILToTensor", "ConvertImageDtype", "ToPILImage", "Normalize", "Resize", "Scale",
           "CenterCrop", "Pad", "Lambda", "RandomApply", "RandomChoice", "RandomOrder", "RandomCrop",
           "RandomHorizontalFlip", "RandomVerticalFlip", "RandomResizedCrop", "RandomSizedCrop", "FiveCrop", "TenCrop",
           "LinearTransformation", "ColorJitter", "RandomRotation", "RandomAffine", "Grayscale", "RandomGrayscale",
           "RandomPerspective", "RandomErasing", "GaussianBlur", "InterpolationMode", "RandomInvert", "RandomPosterize",
           "RandomSolarize", "RandomAdjustSharpness", "RandomAutocontrast", "RandomEqualize"

本文有误之处,请各位看官能指点一二,互相交流!

你可能感兴趣的:(pytorch学习笔记,python,神经网络,机器学习,深度学习,pytorch)