Skip to content

结业考核

这是本书过程化考核的最后一环,由两部分组成:综合项目结业测验。全部完成后,你应当能脱离任何 AI 工具独立使用 PyTorch 完成数据建模,并读懂、验证 AI 生成的代码——这正是本书的两个核心目标。

一、综合项目

从下面三个主题中任选一个,独立完成。也可以自拟同等难度的主题,但必须先按第 12 章 12.5 的审查清单自评。

主题 A:房价回归预测

  • 合成或真实数据集(合成须说明生成公式),特征至少 2 维(如面积、房间数、楼层);
  • 划分训练/验证集,用 MLP 回归,输出 RMSE 曲线;
  • 保存最优模型,加载后对「新房子」做预测并输出;
  • 对 AI 生成的回归训练代码做一次审查,列出修复点。

主题 B:图片二分类器

  • 合成数据:两类有明显差异的 28×28 灰度图(如明暗、左右半边、图形位置);
  • 用第 10 章风格的自定义 CNN 训练,每轮打印 train/val 准确率;
  • 保存最优 state_dict 并加载复验;
  • ToTensor 把 3 张 NumPy 图片预处理后送入模型,输出预测类别。

主题 C:AI 代码审查报告

  • 让 AI 生成一段「用 DataLoader 训练 CNN 分类 1000 张图」的完整代码;
  • 定位并修复其中至少 4 个问题(可涵盖:dtype、形状、设备、zero_gradeval/no_gradstate_dict 结构);
  • 每个问题写清:现象(报错或异常行为)、原因、修复前后代码;
  • 修复后完整训练并输出验证准确率。

统一验收标准(全部满足才算通过):

标准说明
可运行按 README 或注释说明可一键运行,无语法错误
有注释关键函数有注释,说明「为什么」
有容错空文件、缺失值、异常值不会导致程序崩溃
结构清晰用函数组织代码,没有大段重复
有评估训练/验证集划分明确,输出评估指标
可复现随机种子固定,重跑结果一致
有保存模型保存并可加载复验

二、结业测验

覆盖第 1~12 章知识点,共 15 题,答对 12 题(80%)以上视为通过。

  1. torch.tensor([1, 2, 3]).shape 的结果是?(第 1 章)
    • A. 3
    • B. torch.Size([3])
    • C. torch.Size([1, 3])
    • D. [3]
  2. PyTorch 默认浮点 dtype 是?(第 1 章)
    • A. float64
    • B. float32
    • C. int64
    • D. float16
  3. torch.linspace(0, 1, 5) 的结果是?(第 2 章)
    • A. tensor([0., 0.2, 0.4, 0.6, 0.8, 1.])
    • B. tensor([0., 0.25, 0.5, 0.75, 1.])
    • C. tensor([0., 0.5, 1.])
    • D. 报错
  4. 下列哪种方式得到的是视图?(第 3 章)
    • A. a.clone()
    • B. a[1:3]
    • C. torch.tensor(a)
    • D. a[torch.tensor([0, 2])]
  5. torch.tensor([10, 20, 30, 40, 50])[::-1] 会?(第 3 章)
    • A. 返回倒序张量
    • B. 报 ValueError: step must be greater than zero
    • C. 返回空张量
    • D. 返回列表
  6. 矩阵乘法应使用哪个运算符?(第 4 章)
    • A. *
    • B. @
    • C. &
    • D. #
  7. 形状 (2, 3)(3,) 的张量相加,结果形状是?(第 4 章)
    • A. (2,)
    • B. (2, 3)
    • C. (3, 2)
    • D. 报错
  8. 对不连续张量调用 view(-1) 会?(第 5 章)
    • A. 正常返回
    • B. 报 RuntimeError,建议用 reshape
    • C. 自动复制
    • D. 返回空张量
  9. torch.stack([a, b], dim=0)torch.cat([a, b], dim=0) 的区别是?(第 5 章)
    • A. 没有区别
    • B. stack 新增一个维度,cat 沿已有维度拼接
    • C. cat 新增一个维度
    • D. stack 要求形状不同
  10. x = torch.tensor(3.0, requires_grad=True); y = x ** 2; y.backward(); x.grad 是?(第 6 章)
    • A. tensor(9.)
    • B. tensor(6.)
    • C. tensor(3.)
    • D. tensor(2.)
  11. 每次 backward() 后梯度默认会?(第 6 章)
    • A. 自动清零
    • B. 累加
    • C. 变成 None
    • D. 变成随机数
  12. 分类任务通常使用哪个损失函数?(第 8 章)
    • A. MSELoss
    • B. CrossEntropyLoss
    • C. L1Loss
    • D. HuberLoss
  13. DataLoader(ds, batch_size=4) 处理 10 个样本,产生几批?(第 9 章)
    • A. 2
    • B. 3
    • C. 4
    • D. 10
  14. nn.Conv2d(1, 4, kernel_size=3, padding=1)(8, 1, 28, 28) 输入,输出形状是?(第 10 章)
    • A. (8, 4, 28, 28)
    • B. (8, 4, 26, 26)
    • C. (8, 1, 28, 28)
    • D. (4, 8, 28, 28)
  15. 评估模型时,正确做法是?(第 11 章)
    • A. model.train() + torch.no_grad()
    • B. model.eval() + torch.no_grad()
    • C. 只调 model.eval()
    • D. 什么都不用调

三、结业评审

  • 综合项目:对照验收标准逐条自评;如果可能,请另一位同学或老师运行你的程序。
  • 结业测验:15 题答对 12 题以上。
  • 两项都通过,即完成本书全部学习目标。

结业后的下一步

本书覆盖的是 PyTorch 核心。之后可以按兴趣深入:

  • 数据与可视化:pandasmatplotlib(配合张量分析数据)
  • 经典模型:torchvision 自带模型(ResNet 等)与预训练权重、torchvision.datasets(MNIST、CIFAR)
  • 自然语言处理:transformers(Hugging Face)、torchtext
  • 训练技巧:学习率调度、正则化(Dropout、Weight Decay)、BatchNorm、迁移学习
  • 部署:torch.compileONNX 导出、TensorRT

无论选哪个方向,记住本书的两条原则:独立写出能跑的向量化代码,读懂并验证别人(包括 AI)写的代码。