第 24 章练习与答案

请添加图片描述

🌈 关于《AI 零基础 36 讲》课后训练

📚 与正式讲解配套学习

本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正式讲解一起使用。整个系列面向初学者,从日常 AI
使用逐步进入编程、模型训练和大模型应用开发。

✍️ 先独立作答,再核对答案

训练围绕本章知识安排概念判断、结果分析或动手任务,并提供参考答案与解释。建议先读完对应的正式文章,再独立作答;遇到困难时回看相关例子,最后核对答案。

💻 代码题请亲手运行

观察程序输出,确认自己能解释结果、发现错误并完成修复。做完一道题,也要弄清答案为什么成立。

题目

  1. 图中的 4×4 输入、2×2 核,步长 1、无填充,输出为什么是 3×3。第二行第二列输出是多少。
  2. 最大池化得到 [[3,2],[1,2]] 后,还能恢复输入的每个像素吗。
  3. 卷积层有 8 个 3×3 核,输入一个灰度通道,每个输出通道一个偏置。参数有多少,是否随图片位置重复增加。
  4. 为什么源任务的十类分类头需要替换。奇偶答案能由标签求余得到,是否可以把真实数字标签也喂给目标模型。
  5. 冻结模型时有哪些参数仍需更新。解冻后为什么重新建立优化器。
  6. 微调比从头训练多答对两张,能否得出迁移总是更好、更快。至少指出两项实验限制。

参考答案

1. 输出格数

每个方向有 4-2+1=3 个完整窗口。第二行第二列覆盖 [[3,0],[0,2]],输出为 3-2=1。这里核没有翻转。全部九格见计算表。

rowcolumntop_leftbottom_rightoutput
0013-2
01000
02211
10000
11321
12000
20110
21000
22220
from examples.conv_core import TEACHING_IMAGE, TEACHING_KERNEL, manual_correlation
result = manual_correlation(TEACHING_IMAGE, TEACHING_KERNEL)
print(result.shape, result[1, 1])

输出为 (3, 3) 1.0。

2. 池化的信息

不能恢复。最大值没有记录同一区域中其他三个值,也没有保留最大值原来在区域的哪个位置。本章没有返回最大值索引。

3. 卷积参数

每个核有 9 个权重,总参数为 (1×3×3+1)×8=80。这些权重在各位置共享,不按扫描窗口数量再乘一遍。

import torch
layer = torch.nn.Conv2d(1, 8, 3, padding=1)
print(sum(p.numel() for p in layer.parameters()))

输出为 80。

4. 目标头和标签

源头有十类,目标只有偶数与奇数两类,目标编号对应关系已经变化。应复制特征部分并新建二类头。把真实数字标签作为输入会直接提供答案线索,破坏从图片预测的任务。标签求余只用于数据编制与核对。

5. 更新范围

冻结特征时保留新头可求导,更新 66 个参数。微调时允许全部 4274 个参数更新。若旧优化器只收到分类头,解冻特征不会自动把它们加进优化器。本章显式重新建立优化器,并使用较低学习率。

6. 结果限制

这次固定划分只看到微调多答对两张,冻结迁移还少答对一张。单次实验没有验证跨种子的稳定性。迁移另用了 1000 张源图片和 30 轮预训练,完整成本并非只有目标阶段。源任务和目标任务仍属于同一图片家族,也不能据此说明可以迁移到宠物照片等差异很大的场景。

Logo

更多推荐