通常来说,当你处理图像,文本,语音或者视频数据时,你可以使用标准 python 包将数据加载成numpy 数组格式,然后将这个数组转换成 torch.*Tensor。
对于图像,可以用 Pillow,OpenCV
对于语音,可以用 scipy,librosa
对于文本,可以直接用 Python 或 Cython 基础数据加载模块,或者用 NLTK 和 SpaCy。
对于视觉,pytorch创建了totchvision的包。
https://pytorch-cn.readthedocs.io/zh/latest/torchvision/torchvision/
数据加载模块 torchvision.datasets
,
数据转换模块 torch.utils.data.DataLoader
使用CIFAR10数据集进行学习。
CIFAR10数据集:它包含十个类别:‘airplane’, ‘automobile’, ‘bird’, ‘cat’,‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’。CIFAR-10 中的图像尺寸为33232,也就是RGB的3层颜色通道,每层通道内的尺寸为32*32。
训练一个图像分类器步骤:
1.使用torchvision加载并且归一化CIFAR10的训练和测试数据集
2.定义一个卷积神经网络
3.定义一个损失函数
4.在训练样本数据上训练网络
5.在测试样本数据上测试网络
加载并归一化 CIFAR10
使用 torchvision
,来加载 CIFAR10 数据。
import torch
import torchvision
import torchvision.transforms as transforms
torchvision 数据集的输出是范围在[0,1]之间的 PILImage,我们将他们转换成归一化范围为[-1,1]之间的张量 Tensors。
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,shuffle=False, num_workers=2)
classes = ('plane', 'car', 'bird', 'cat','deer', 'dog', 'frog', 'horse', 'ship', 'truck')
jupyter notebook代码:
http://localhost:8888/notebooks/12%E3%80%81%E5%9B%BE%E5%83%8F%E5%88%86%E7%B1%BB%E5%99%A8.ipynb