本篇博客站在复现的角度,讲解每一步可能遇到的问题。但并不会逐一对每句代码进行讲解,因此至少需要理解pytorch训练神经网络的过程(如何求梯度并更新参数)。
你可以狠狠的戳这里,直接查看pytorch官网原项目:
我使用的环境:
- pytorch 1.4+cpu
- python 3.7‘
CIFAR10数据样式

我们跳过一些展示图片的过程,直入主题。
首先,要下载CIFAR10数据库。注意:
1、torchvision数据集输出的是PIL类,且值取值范围是[0,1]。因此首先要将PIL转换为Tensor类。pytorch官网上又将其值归一化到[-1,1],这一步跳过也可以。
推荐阅读:
知乎:什么时候对数据进行[0,1]归一化,什么时候[-1,1]归一化,二者分别在什么场景?
博客:为什么一些机器学习模型需要对数据进行归一化?
2、要是运行出错就把num_workers 这个选项设为0。关于num_wokers作用:
num_workers:使用多进程加载的进程数,0代表不使用多进程
import torch
import torchvision
import torchvision.transforms as transforms
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.

这篇博客介绍了使用PyTorch进行CIFAR10图像分类的实践过程,包括数据预处理、网络构建、损失函数和优化器的选择,以及训练和测试步骤。在数据预处理中,提到了将PIL图像转换为Tensor以及归一化的选择。网络结构未详细展开,但提到使用了交叉熵损失和带动量的SGD优化器。训练过程中,建议迭代次数适中以防止过拟合。
最低0.47元/天 解锁文章
1007

被折叠的 条评论
为什么被折叠?



