本教程假设你已有Python基础,并安装了PyTorch(建议1.13以上版本)。首先导入必要库:torch、torchvision、matplotlib。使用torchvision.datasets加载CIFAR-10,设置transform为ToTensor和Normalize。创建DataLoader时定义batch_size=64,shuffle=True。
定义简单的CNN模型:两个卷积层(Conv2d+ReLU+MaxPool2d),后接两个全连接层。输入图像3x32x32,第一个卷积层输出16通道,第二个输出32通道。展平后通过512维隐藏层,最终输出10个类别。
训练循环:设置损失函数CrossEntropyLoss,优化器Adam(lr=0.001)。每个epoch遍历训练数据,前向传播计算损失,反向传播更新参数。每100个batch打印一次损失。验证集上计算准确率,防止过拟合。
训练10个epoch后,模型在测试集上正确率约70%。可尝试增加卷积层数、使用Dropout、数据增强(随机翻转、裁剪)提升效果。保存模型用torch.save(model.state_dict(), 'model.pth')。加载时需先实例化相同结构模型再load_state_dict。
注意:GPU训练需将模型和数据移至cuda,即model.to('cuda')和inputs, labels = inputs.cuda(), labels.cuda()。若内存不足,减小batch_size或使用混合精度训练。本教程完整代码可在GitHub仓库找到,欢迎参考。