1. 环境准备与数据加载
第一次接触PyTorch和CIFAR-10数据集时,我花了不少时间在环境配置上。建议直接使用Anaconda创建Python 3.8+的虚拟环境,这样能避免很多依赖冲突问题。安装PyTorch时,记得根据你的显卡选择CUDA版本,没有N卡的同学用CPU版本也能跑,只是训练速度会慢些。
CIFAR-10数据集包含6万张32x32的彩色图片,分为10个类别。我第一次看到这些迷你图片时,差点以为下载错了——飞机、汽车都像马赛克一样模糊。但正是这种小尺寸让它成为入门练手的绝佳选择,毕竟不是谁都有显卡能处理高清大图。
用PyTorch加载数据特别简单,几行代码就能搞定:
python复制import torchvision
transform = torchvision.transforms.Compose([
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize((0.5,0.5,0.5), (0.5,0.5,0.5))
])
train_data = torchvision.datasets.CIFAR10(
root='./data',
train=True,
download=True,
transform=transform
)
这里有个坑我踩过:忘记做数据标准化(Normalize)。刚开始训练时损失值死活不下降,后来发现是像素值(0-255)没归一化到(-1,1)区间。建议新手务必加上这个转换,能显著提升训练稳定性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 构建CNN模型
设计CNN结构就像搭积木,但第一次我堆得太复杂,结果模型根本训不动。后来发现对于CIFAR-10这种小图片,3-4个卷积层就够了。下面这个结构是我调试多次后比较稳定的版本:
python复制import torch.nn as nn
class SimpleCNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(3, 32, 3, padding=1)
self.pool
