跳转到内容

5:卷积神经网络实战

机器学习Banner

纸上得来终觉浅,绝知此事要躬行。

本次任务使用 CIFAR-10 数据集。你需要从零搭建一个卷积神经网络,完成十分类任务,并通过一次对比实验尝试改进模型。

数据集在哪里(?最方便的方式是直接通过 torchvision 下载。download=True 会自动将数据保存到指定的 root 目录;train=True 加载训练集,train=False 加载测试集。

from torchvision import datasets, transforms
transform = transforms.Compose([
transforms.ToTensor(),
])
train_dataset = datasets.CIFAR10(
root="./data",
train=True,
download=True,
transform=transform
)
test_dataset = datasets.CIFAR10(
root="./data",
train=False,
download=True,
transform=transform
)

也可以从多伦多大学的 CIFAR 官方页面手动下载 Python 版本压缩包,官方页面提供约 163 MB 的 Python 数据版本。

CIFAR-10 中的每张图片大小为:3×32×323×32×32

数据集包含以下十个类别:

airplane、automobile、bird、cat、deer
dog、frog、horse、ship、truck

请完成:

使用 PyTorch 加载 CIFAR-10,并划分训练集、验证集和测试集。 随机展示部分图片,观察不同类别之间有哪些容易区分或容易混淆的特征。

建议将原训练集划分为:

训练集:45000 张
验证集: 5000 张
测试集:10000 张

请使用 PyTorch 的基础组件,搭建一个用于 CIFAR-10 分类的卷积神经网络。

网络至少包含:

  • 两个卷积层;
  • 非线性激活函数;
  • 池化或其他下采样操作;
  • 全局平均池化或 Flatten
  • 输出维度为 10 的分类层。

可以参考下面的数据流,但不要求完全照搬:

输入图片
卷积 + 激活
池化
卷积 + 激活
池化
全局平均池化
全连接分类

要求:

不得直接使用 torchvision.models 中已经搭建完成的模型。 在注释或报告中写出各主要层的输入和输出形状。

请选择合适的损失函数和优化器,完成模型训练。

训练过程中至少记录:

  • 训练集损失;
  • 验证集损失;
  • 训练集准确率;
  • 验证集准确率。

请绘制训练曲线,并保存验证集表现最好的模型。

不要求手动实现反向传播,但需要能够说明下面几行代码分别完成了什么:

optimizer.zero_grad()
loss.backward()
optimizer.step()

在基础 CNN 上任选一种方法进行改进:

  • 加入 BatchNorm;
  • 加入 Dropout;
  • 使用数据增强;
  • 调整网络深度或通道数;
  • Flatten 改为全局平均池化;
  • 加入一个简单的残差连接
  • 更换优化器或学习率策略。

为了公平比较,改进前后应尽量保持训练轮数、数据划分和其他训练条件一致。

完成下面的表格:

模型验证集准确率测试集准确率参数量
基础 CNN
改进后的 CNN

请简单回答:

你修改了什么?为什么认为它可能有效?实验结果是否符合预期?

改进后性能没有提升并不代表实验失败,但需要分析可能的原因。

请在测试集上完成模型评估,并展示:

  • 测试集准确率;
  • 混淆矩阵;
  • 若干预测正确的图片;
  • 若干预测错误的图片。

选择一组容易混淆的类别,例如 catdog,简单分析:

模型为什么容易混淆它们? 问题可能来自图片分辨率、训练数据,还是模型结构?

以下内容任选其一,不作为基础要求:

  1. 使用残差块搭建一个小型 ResNet;
  2. 可视化第一层卷积核或中间特征图;
  3. 比较 MLP 和 CNN 在 CIFAR-10 上的参数量与分类效果;
  4. 使用深度可分离卷积设计轻量模型;
  5. 研究不同数据增强方式对模型的影响。
  • 请提交:

    1. 可以运行的完整代码;
    2. 模型结构及各层输出形状;
    3. 训练和验证曲线;
    4. 基础模型与改进模型的对比结果;
    5. 混淆矩阵与错误样本分析;
    6. 简短的实验总结。

    允许查阅资料或使用 AI 辅助,但需要能够解释模型结构、训练流程以及自己做出的修改。

  • 整体报告: ml-5-姓名-学号.md

  • 邮箱: gimmerml401@163.com

  • 主题: 5-姓名-学号

出题人:出题人头像  Parzival

QQ:450621609

邮箱:450621609@qq.com