从监督学习到动态计算
Learning to See — Network Architecture。 从图像与类别标签出发,理解一台视觉网络怎样连接、怎样学习,以及怎样分配计算。
课堂先选一个问题。 下方活动可以只读保存结果,也可以按各册准备步骤运行;不必从第一本开始逐本执行。讨论时带回三件东西:你改了什么、哪张图或哪个数值支持判断、还有什么不能推出。
课后连续阅读按 CLS 01 → CLS 03 → CLS 04 → CLS 06 → CLS 07;观察与干预按需读 CLS 05。CLS 补足推理,Lab 让你改变条件并检验,网页阅读版便于直接看图,下载版保留代码与输出。
课外链接建议右键在新标签页打开,结束后切回原 Slides 标签。各册的返回链接定位到对应主题,不会自动恢复任意来源停点。
从课堂问题进入材料
课堂活动:先选一个问题
可以两人结对:一人先预测,一人运行或读图,再交换解释。下面是选择入口,不是全部必做清单;具体代码位于各册所列小节。
| 想检验什么 | 怎样开始 | 只改一项/做一个观察 |
|---|---|---|
| 一次更新:步长变大一定更好吗? | 短练 · NumPy / Matplotlib;准备块 → 第 3 节;改 P 后先重跑准备块 | scalar_lr:0.1 → 0.3,再单独试 0.55;先预测 w′、y′、L′。 |
| 同一个核:增加输入通道会改变什么? | 独立短练 · PyTorch;该节代码自带导入,无数据下载或训练 | 只把 CIN:2 → 3,保持 COUT=3、KH=2、KW=2。 |
| 残差:有 skip 就一定保留输入吗? | 独立短练 · PyTorch;该节代码自带导入,只做前向与求导 | 只把 BRANCH_GAIN:0 → −1,预测 skip / post-ReLU 四种组合。 |
| 结构与增强:先读四格,再解释取舍 | 读保存结果 · 无需运行;直接看四组图表;完整重算需第 4 节训练 | 同一结构内比较有/无增强,再比较原图与右移测试。 |
| 遮挡:同样的框等于同样的干预吗? | 先读保存图 · 可选固定模型前向;重算需配套文件 → 准备 → 第 1 节 → 第 3 节 | 先比较 A/B 的改变像素数;预测 FILL:0 → 0.5 会怎样。 |
| 早退:为什么动态方案没赢过浅出口? | 读表与手算 · 无需训练;读三条 MAC 路径和固定浅出口负对照 | 用 357 张早退、3 张继续核对平均值;再预测 τ=1.01。 |
每组带回一项证据和一句限制:改了什么、结果支持什么、还不能说明什么。设备暂时不能运行时,保存结果仍可完成比较讨论。
主讲—CLS—Lab 对应关系
| 主讲问题 | 连续阅读 | 可选择的活动 |
|---|---|---|
| A · 一台视觉网络怎样学起来 | CLS 01 · 从像素到学习:表示、损失与一次更新 | LAB 06 · 表示、损失与学习步长 |
| B · 为什么这样组织局部计算 | CLS 03 · 同一台 CNN:局部计算、共享反馈与检验;CLS 05 · 观察与迁移:响应说明什么,新任务怎样检验 的观察与干预 | LAB 01 · 学会一个卷积核:第1/3节,局部乘加与共享梯度;LAB 02 · 小 CNN 与图像平移:第5/6节,图像平移与预测变化;LAB 03 · 架构实验室:第1/3/4节,感受野、分支和残差条件;LAB 08 · 从真实响应到遮挡对照:第1/3节,真实响应与同面积遮挡对照 |
| C · 网络不只是不断加层 | CLS 04 · 为什么还要加深:训练起点、规模与残差;CLS 06 · 现代骨干与公平比较 的连接与比较 | LAB 03 · 架构实验室;LAB 05 · 经典架构与视觉表示 的相关段落 |
| D · 给定预算,哪些计算值得保留 | CLS 06 · 现代骨干与公平比较;CLS 07 · 设备、自动设计与动态计算 的成本部分 | LAB 10 · 成本目标与结构选择 |
| E · 谁来选择这张计算图 | CLS 07 · 设备、自动设计与动态计算 的搜索与部署部分 | LAB 10 · 成本目标与结构选择 的验证选择与简单基线 |
| F · 看到输入以后怎样选择计算 | CLS 07 · 设备、自动设计与动态计算 的动态计算收束 | LAB 11 · 何时继续计算 |
可以先阅读已保存的图与结果,再预测改变一个条件会发生什么。CLS 补足推理,Lab 保留可运行代码、协议与反例。
按图继续观察:
- CLS06 · ConvNeXt 接口图:找出空间混合、C→4C→C 与相加接口。
- CLS07 · 模型计时与用户等待:圈出两个计时区间,预测局部提速怎样影响整段等待。
- CLS07 · 部署前选网与逐输入早退:分别改变设备和输入,判断哪项选择改变。
- CLS07 · MoE、Loop 与视觉 TTT:沿三幅图区分路径选择、状态变化和参数更新。
- LAB11 · 三条 MAC 路径:比较全深度、早退、继续三条账本,再读固定浅出口负对照。
全部材料索引
参考材料分别解决什么问题
- 传统视觉:CLS 02 · 传统视觉:局部描述、共同词典与分类 与 LAB 07 · 空间格、方向桶与传统表示 解释局部描述、词典和空间统计,作为历史参照,非主讲必读链。
- 按需实现:LAB 04 · 卷积怎样变成图像分类器、LAB 05 · 经典架构与视觉表示 保留完整实现和架构参考;LAB 06 · 表示、损失与学习步长 可用于基础核对。根据问题选择段落,不要求从头重跑。
- 完整 Attention 暂存:LAB 09 · 视觉 Attention 完整层 保留完整公式、张量与保存输出,归第五讲暂存入口,不作为第二讲或第三讲前置。
- 可靠性与适应:CLS 08 · 分布变化与适应 与 LAB 12 · Source、Norm 与 Tent 保留完整协议和负结果,属于独立研究参考,不是动态计算之后的必做活动。
学习目标:从会认结构,到能解释设计
- 沿同一计算图解释图像、分数、监督误差与参数更新。
- 区分串行、分支、相加与拼接,检查形状和信息接口。
- 将参数、MAC、存储与真实延迟分开,识别结构与配方混杂。
- 区分部署前选网、逐输入选路、共享块循环与测试时学习。
- 用简单静态基线、预期指标、额外开销与反证条件提出一个结构改动。
怎样读代码与使用 AI
先独立写一句预测,再用 AI 协助定位或修改一个条件。运行前核对输入形状、数据划分和评价指标;运行后先读数值与图,再判断预测是否成立。
| 讨论时带回什么 | 一个可用的句式 |
|---|---|
| 改动与不变量 | 我只把……改为……,其余……保持相同。 |
| 证据 | 在……条件下,图中的……/输出的……支持了……。 |
| 限制与下一步 | 这还不能说明……;下一项最小对照是……。 |
AI 可以帮你解释报错、追踪张量或生成小改动,不能代替比较协议。遇到结果不如预期,先核对条件;保留断言、失败例和不占优的基线。不要通过换测试样本或删掉对照让方案获胜。
需要重算时:环境、文件与证据身份
只看图与保存结果: 不需要启动运行环境。先按所选 Lab 开头的阅读路线定位图、表和结论。
运行短练习: 先运行该册的准备单元,再执行明确标出的依赖。LAB 01/03 的小张量实验使用 PyTorch;LAB 06 的学习步实验使用 NumPy 与 Matplotlib。下面的通用环境检查会安装缺少的包,按需执行。
复算模型实验: LAB 02 的第 5/6 节依赖第 4 节产生的模型、训练记录和预测变量,不能仅上传结果文件后直接跳入。LAB 08 则从匹配的模型文件和数据读取,不借用另一本 Notebook 的内存。可下载原模型与数据配套包,保留 data/ 与 results/ 目录,并核对各册要求的模型哈希、样本划分与准备步骤。
LAB 10/11 从 sklearn 内置 digits 独立准备数据和模型;阅读其历史输出不需要重训,重新执行训练会得到一次新的运行记录。LAB 11 的平均 MAC 是 conv/linear 乘加账本,不是实际早退计时。LAB 12 是按需参考,采用自己的 BN 模型、初始化、batch、顺序与重置协议。
保存输出标注了原执行时间或模型身份。重新计算时记录自己的环境和条件,并把新结果与历史结果分开比较。
查看代码 · 单元 16
import importlib.util
import importlib.metadata
import subprocess
import sys
if sys.version_info < (3, 10):
raise RuntimeError('Please choose a Python 3.10+ environment for these notebooks.')
required = {
'numpy': 'numpy',
'sklearn': 'scikit-learn',
'matplotlib': 'matplotlib',
'torch': 'torch',
'IPython': 'ipython',
'nbformat': 'nbformat',
'matplotlib_inline': 'matplotlib-inline',
}
missing = [package for module, package in required.items()
if importlib.util.find_spec(module) is None]
print('Missing packages:', missing or 'none')
# Install only missing packages. CPU PyTorch is enough for these labs.
if 'torch' in missing:
subprocess.check_call([
sys.executable, '-m', 'pip', 'install', 'torch',
'--index-url', 'https://download.pytorch.org/whl/cpu',
])
other_missing = [package for package in missing if package != 'torch']
if other_missing:
subprocess.check_call([sys.executable, '-m', 'pip', 'install', *other_missing])
importlib.invalidate_caches()
import numpy
import matplotlib
import torch
import IPython
import nbformat
import matplotlib_inline
print('Environment ready. Python:', sys.version.split()[0])
for package in required.values():
print(package, importlib.metadata.version(package))
print('Next: choose the matching Lab in the Notebooks sidebar and run its preparation cells first.')第三讲与后续材料
本讲先弄清网络怎样连接、训练与分配计算;第三讲 · 可迁移表示与多模态感知继续追问:已经学到的表示怎样复用?类别标签之外还能从哪里获得学习信号?
接下来从检测与分割的空间输出,走向 3D、Video,以及图像和语言之间的对应。这是课程安排;各部分当前可阅读、可运行的材料以第三讲导读为准。
CLS 05 保留当前名称,本讲使用观察与干预部分;迁移实验进入第三讲的独立 LAB 09。不同讲次项目不共享运行内存,进入第三讲后按其材料自己的准备步骤操作。完整 Attention 仍在后续讲次展开,当前第二讲 LAB 09 是按需实现参考。
返回课程
第二讲主讲 · 第二讲 HTML 导读 · 第三讲主讲 · 第一讲 · 课程主页
来源、许可与实验条件保留在各材料中;版本、历史映射与验收范围见。