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