《动手学深度学习》学习笔记 · 第 51~111 集合订复习版

覆盖范围:第 51 集(加州房价竞赛)~ 第 111 集(分布式训练 QA),中间无笔记的集数(54-56、99-103、110、112-113)不做填充
最终进度:111/191 ▊▊▊▊▊▏▏▏▏▏ 58.1%
进度轨迹:27.7% → 31.4% → 33.0% → 36.1% → 37.7% → 39.3% → 40.8% → 42.4% → 44.0% → 45.5% → 47.1% → 48.7% → 50.3% → 51.3% → 56.5% → 58.1%

李沐深度学习191集课程全解析:模块拆解、学习路径-CSDN博客

吴恩达《面向开发者的提示词工程》-CSDN博客

吴恩达 MCP 教程(Model Context Protocol)-CSDN博客

🗺️ 总章节路线图

章集数主题状态
一、竞赛收官与模型构造51-53房价竞赛复盘、QA、nn.Module 块思想✅
二、第5章收官:QA 与 GPU 使用/选购57-60自定义 Module、GPU 三步铁律、买卡优先级✅
三、卷积神经网络基础61-75竞赛总结、CNN 由来、卷积/填充步幅/多通道/池化✅
四、经典 CNN 演进链76-98LeNet→AlexNet→VGG→NIN→GoogLeNet→BN→ResNet✅
五、单机多卡与分布式训练104-111数据并行、多机 all-reduce✅
下一站110 / 112-113单机多卡简洁实现、数据增广 + QA⏭

📑 目录导航


第一章 竞赛收官与模型构造(第 51-53 集)

🔗 在线链接:https://go.tabbit.site/projects/gQ9RfkdbnM

Markdown 版可视化(Unicode)

三集路线:
51 加州房价竞赛 ─→ 52 QA ─→ 53 模型构造
  管道复用拉练       提分靠数据    第5章开篇🏁
  特征工程>模型      一针见血      nn.Module 基石
集数主题关键点重要度
51加州房价竞赛60万条数据,第50集管道照搬即出成绩▊▊▊
52QA提分靠优化数据管道,非换模型▊▊▊
53模型构造一切皆"块",nn.Module 统一接口▊▊▊▊▊
nn.Module 继承模板:
class MLP(nn.Module):
    __init__  → 声明层(参数自动收集)
    forward   → 定义计算图
块 = 层 / 组件 / 整模型,可任意嵌套 🧩
⚠️ 子模块放容器要用 nn.ModuleList,原生 list 不被追踪

详细总结

第51集(08:40):课程内部竞赛——加州 2020 房价预测,约 60 万条记录比 Kaggle 版更大。核心体验是管道复用:第 50 集的五步流程原样照搬就能出成绩,训练配方仍是线性回归 + weight_decay + K 折验证。赛后最大心得:成绩差距主要来自数据预处理与特征工程,模型本身是次要的 💡

第52集(03:22):短答疑一针见血——想提成绩?优化数据管道(特征选择、清洗、对数变换)比换模型收益大;判断过拟合:K 折验证分数明显差于训练分数时,加正则或简化特征。

第53集(13:28):第 5 章《深度学习计算》开篇,nn.Module 是一切的基石——块(Block)思想:层、多层组件、整个模型都是块,统一接口可自由嵌套;nn.Sequential 本质就是按顺序串联子模块的容器。框架魔法:子模块参数自动收集、自动初始化、自动上 GPU。实战注意:子模块要放 nn.ModuleList/Dict,原生 Python list 不会被追踪 ⚠️

进度:▊▊▊▊▏▏▏▏▏▏ 27.7%(53/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=51
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=52
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=53

第二章 第5章收官:QA 与 GPU(第 57-60 集)

🔗 在线链接:https://go.tabbit.site/projects/dgiMWNgEuM

Markdown 版可视化(Unicode)

四集路线:
57 第5章QA ─→ 58 使用GPU ─→ 59 购买GPU ─→ 60 QA
框架内功收官🏁  查设备/搬数据   显存优先⭐    利用率低查num_workers
集数主题关键点重要度
57第5章 QA复杂控制流 → 自定义 Module▊▊▊
58使用 GPUx.to(‘cuda’) 非原地,需重新赋值▊▊▊▊▊
59购买 GPU显存 > 算力 > 功耗▊▊▊▊
60QA瓶颈常在数据加载而非 GPU▊▊▊
GPU 使用三步铁律:
1️⃣ 查设备  torch.cuda.device_count()
2️⃣ 搬数据  x = x.to('cuda')   ⚠️ to() 返回副本
3️⃣ 同设备  数据与参数必须同卡,跨设备运算直接报错 ❌
显存三救急:
显存不够 → 减 batch size 📉
→ 换更小模型
→ 混合精度训练 ⚡

详细总结

第57集(10:52):第 5 章收官 QA——需要复杂控制流(分支、循环、共享层)就写自定义 Module,简单堆叠用 Sequential 即可;参数绑定的典型场景是孪生网络共享编码器、编码器解码器共用词嵌入矩阵;设计新层先想数学上是否可微,再谈实现 🧠

第58集(13:35):GPU 使用三板铁律——torch.device(‘cuda’) 声明设备、device_count() 查卡数;to() 返回副本不是原地操作,必须重新赋值 x = x.to('cuda');数据与参数必须在同一设备才能运算,跨设备直接报错。模型用 net.to('cuda') 整体搬移 🚦

第59集(08:55):选购指南——优先级排序:显存 ⭐⭐⭐⭐⭐ > 算力带宽 > 功耗散热。显存决定能跑多大模型和 batch;初学别追顶配,中端卡 + 大显存够用,二手警惕矿卡;没卡就 Colab/Kaggle 白嫖或租 AWS 竞价实例 ☁️

第60集(08:04):实战答疑——GPU 利用率低多半是数据加载瓶颈,调大 num_workers;显存不够减 batch / 减模型 / 混合精度;多卡先不急,第 104 集有专门章节,先学好单卡 🎯

进度:▊▊▊▏▏▏▏▏▏▏ 31.4%(60/191)🎉 第 5 章《深度学习计算》完结!

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=57
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=58
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=59
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=60

第三章 卷积神经网络基础(第 61-75 集)

3.1 第61-63集:竞赛总结 + 从全连接到卷积

🔗 在线链接:https://go.tabbit.site/projects/d9nSnirrpr

Markdown 版可视化(Unicode)

三集路线:
61 竞赛总结 ─→ 62 QA ─→ 63 从全连接到卷积
特征工程>模型⭐  26分钟复盘   CNN 开篇🚀
管道即资产       防验证集过拟合 两大先验原则
集数主题关键点重要度
61竞赛总结特征工程贡献最大,模型次要▊▊▊▊
62QA反复调参会"偷看"验证集 → K 折平均▊▊▊
63卷积由来平移不变性 + 局部性 → CNN▊▊▊▊▊
全连接 → 卷积的推导链:
图片太大 3×10⁶ 维 ❌
   │ 两大先验
   ▼
平移不变性 → 参数共享(全图一个核)🔒
局部性     → 稀疏连接(只看局部窗口)🔲
   ▼
参数爆炸被治好 → CNN 诞生 🎯

详细总结

第61集(16:39):两次房价竞赛总复盘——贡献排序:特征工程 ⭐ > K 折验证 > 模型(线性回归已能打出不错成绩)。核心启示:“数据和特征决定上限,模型只是逼近上限”;可复用的预处理管道是最值钱的沉淀 📦

第62集(26:03):答疑精华——提分靠特征深挖 + 多模型 ensemble,但反复在同一验证集调参会间接"偷看"答案,解法是 K 折平均;表格数据深度学习能用但非最优,XGBoost 通常更强更省力。

第63集(15:00):🚀 第 6 章 CNN 大章节开篇(63-99 集共 37 集)!这集讲 CNN 的"为什么"——全连接处理图片是灾难:1000×1000 彩色图一层就要 3×10¹⁰ 参数。李沐从两条先验原则推导出 CNN 结构:平移不变性 → 参数共享(全图共用一个卷积核);局部性 → 稀疏连接(每个输出只看局部窗口)。CNN 不是拍脑袋发明的,是从图片数据的先验"推导"出来的 🎯

进度:▊▊▊▏▏▏▏▏▏▏ 33.0%(63/191)🎉 三分之一达成!

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=61
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=62
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=63

3.2 第64-69集:卷积运算 + 填充和步幅

🔗 在线链接:https://go.tabbit.site/projects/jjFS7NMA4C

Markdown 版可视化(Unicode)

卷积输出形状三大件:
64 卷积运算 ─→ 67 填充/步幅 ─→ 70 多通道(下一站)
窗口点积       输出形状旋钮🎛️
9参数搞定全图   n+p−k 再除 s
集数主题关键点重要度
64卷积层窗口点积,输出 (H−K+1)×(W−K+1)▊▊▊▊▊
65代码corr2d 手写 + nn.Conv2d▊▊▊▊
66QA互相关≠严格卷积,核靠学习▊▊▊
67填充和步幅输出 = ⌊(n+p−k)/s⌋+1▊▊▊▊▊
68代码4 组实验全验证公式▊▊▊▊
69QA填 0 不碍事,stride vs 池化▊▊▊
输出形状旋钮 🎛️(s=1 时):
填充 p ↑ → 输出变大 → p=k−1 保形状不缩
步幅 s ↑ → 输出变小 → s=2 直接砍半
黄金搭配:
3×3 核 + padding=1        → 形状不变 ✅
5×5 核 + padding=2        → 形状不变 ✅
3×3 核 + p=1 + s=2        → 长宽减半 ✅

详细总结

第64集(11:02):把 63 集的原则翻译成数学——卷积就是滑动窗口做点积:输出[i,j] = ΣΣ 输入窗口 × 卷积核。参数量对比震撼:全连接 3×10¹⁰ ❌ vs 3×3 核只有 9 个参数 ✅。输出尺寸 (H−K+1)×(W−K+1),步幅=1、无填充时每层都会"掉边"。

第65集(10:08):手写 corr2d 双循环窗口点积 → 学习 X 通过训练自动学出边缘检测核(从随机初始化到 [1,-1])→ 封装进 nn.Module 与 nn.Conv2d 对拍。附赠多输入通道雏形:RGB 三通道各卷各的再相加。

第66集(07:44):答疑精华——严格数学卷积要先翻转核,深度学习省略翻转(互相关),叫法习惯而已;卷积核不是手工设计的,是随机初始化 + 反向传播学出来的;多个核 → 多张特征图 → 堆成输出通道。

第67集(14:08):填充和步幅——输出形状的两大旋钮。万能公式:输出 = ⌊(n+p−k)/s⌋+1。填充 p 治"层数深了形状缩没"+“边缘像素只算一次”;步幅 s 是卷积自带的降采样。核心结论:s=1 时取 p=k−1 输入输出同形状——这就是全行业用奇数核(1/3/5/7)的原因:对称填充、中心对齐 🎯

第68集(05:05):四组实验逐一验证公式(补批量+通道维的小技巧):3×3+pad1→[8,8] 不变;(5,3)+(2,1)→非对称填充;3×3+pad1+stride2→[4,4] 减半;(3,5)+(0,1)+(3,4)→[2,2] 组合拳。kernel_size/padding/stride 全支持 (高, 宽) 二元组。

第69集(23:57):答疑——填 0 不干扰学习(0=空白,代价极小);stride 降采样 vs 池化都能缩尺寸(池化下一节登场);公式除不尽就向下取整丢弃边缘。

进度:▊▊▊▊▏▏▏▏▏▏ 36.1%(69/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=64
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=65
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=66
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=67
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=68
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=69

3.3 第70-72集:多输入输出通道

🔗 在线链接:https://go.tabbit.site/projects/6AGo6ydZoA | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=70

集数时长主题一句话核心
7019:34多输入输出通道核形状 co×ci×k²,通道数必须对上
7106:36代码实现corr2d 多通道版 + 1×1 卷积对拍
7219:16QA通道数怎么定、1×1 有何用
70 通道规则 🌈            71 代码 💻              72 QA ❓
┌─────────────────┐   ┌──────────────────┐   ┌─────────────────┐
│ 多输入: 逐通道卷  │   │ corr2d_multi_in  │   │ 通道数=经验驱动  │
│ 积再相加         │──▶│ multi_in_out+stack│──▶│ 64→128→256 翻倍 │
│ 多输出: 核个数=  │   │ 1×1 ≡ reshape+   │   │ 1×1: 混合通道   │
│ 输出通道数       │   │ 矩阵乘法 ✅对拍   │   │ 降维/加非线性   │
└─────────────────┘   └──────────────────┘   └─────────────────┘

详细总结

第70集(19:34):多输入通道——RGB 三通道输入 → 核也带相同通道数 → 逐通道卷积再求和,输出仍是单张特征图。多输出通道——卷积核的个数 = 输出通道数,每个核独立扫描学一种特征。核形状从此变成 co×ci×kh×kw,参数量随通道数相乘暴涨;偏置按输出通道各一个。1×1 卷积不识别空间模式,本质是逐像素的通道维全连接 💡

第71集(06:36):corr2d_multi_in 用 zip 对各通道分别卷积求和;corr2d_multi_in_out 对每个核计算后 torch.stack 堆成通道维,输出 (co, h’, w’)。高光验证:1×1 卷积的输出与"reshape + 矩阵乘法"完全一致,坐实它就是通道全连接 ✅

第72集(19:16):输出通道数没有理论最优,经验驱动、常见逐层翻倍(64→128→256),受算力约束;1×1 卷积三大用途——混合通道、降维/升维省算力、加非线性(NIN/GoogLeNet 基石);卷积参数量与图像大小无关(权重共享),全连接则随分辨率爆炸。

进度:▊▊▊▊▏▏▏▏▏▏ 37.7%(72/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=70
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=71
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=72

3.4 第73-75集:池化层

🔗 在线链接:https://go.tabbit.site/projects/GTFaVswU7o | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=73

集数时长主题一句话核心
7310:21池化层理论窗口取 max/mean,无参数
7406:58实现手写 pool2d + nn.MaxPool2d
7509:48QAmax vs mean、梯度路由
73 理论 🧽              74 实现 💻              75 QA ❓
卷积对位置太敏感  ──▶  手写 max/mean 窗口  ──▶  max 更常用(保最强响应)
最大池化=取最强响应      nn.MaxPool2d 对拍       丢信息换平移容忍
输出公式同卷积 ✅        通道数不变逐通道处理     梯度只给窗口最大值

详细总结

第73集(10:21):卷积挪 1 像素输出大变 → 池化解药:max 取窗口最强响应,换平移容忍 + 降分辨率。无参数、通道数不变、填充/步幅公式与卷积一致(2×2 + s=2 → 长宽减半)📏

第74集(06:58):双循环手写 pool2d(max/mean 双模式)→ nn.MaxPool2d 支持 padding/stride → 多通道逐通道独立处理 ✅

第75集(09:48):max 比 mean 常用(平均偏"糊");池化确实丢信息,但换来容忍度+算力,权衡的免费午餐;无参数无需更新,梯度只路由给窗口内最大值位置 💡

进度:▊▊▊▊▏▏▏▏▏▏ 39.3%(75/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=73
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=74
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=75

第四章 经典 CNN 演进链(第 76-98 集)

经典网络演进总表

网络年份/名次核心标志参数量
LeNet1988,开山之作卷积+池化×2 → FC×3,Sigmoid+平均池化—
AlexNet2012 ILSVRC 冠军ReLU + Dropout + GPU + 数据增广60M
VGG2014 亚军全 3×3 小核积木化、深度换效果139M
NIN—1×1 卷积微型 MLP + 全局平均池化≈2M
GoogLeNet2014 冠军Inception 四路并行 + 1×1 瓶颈6.8M
BN训练稳定器batch 内标准化 + γβ 缩放平移—
ResNet2015 冠军残差连接 y=f(x)+x,深达 152 层—

4.1 第76-78集:LeNet——卷积神经网络开山之作 🏛️

🔗 在线链接:https://go.tabbit.site/projects/TXM6gVni3X | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=76

集数时长主题一句话核心
7608:31LeNet 理论卷积+池化×2 → FC×3,空间↓通道↑
7721:47代码Xavier 初始化 + GPU 训练 Fashion-MNIST
7830:08QA首层卷积在"学眼睛"、加速比 1.8x
LeNet 数据流水线 🏛️
1×28×28 ─▶ 卷积5×5(p=2) ─▶ Sigmoid ─▶ 平均池化 ─▶ 6×14×14
        ─▶ 卷积5×5      ─▶ Sigmoid ─▶ 平均池化 ─▶ 16×5×5
        ─▶ Flatten ─▶ 400 ─▶ 120 ─▶ 84 ─▶ 10 类
设计哲学:池化缩空间 ↘,卷积通道翻倍 6→16 ↗

详细总结

第76集(08:31):LeCun 1988 年为邮编/支票识别设计的开山 CNN 📮。结构哲学——池化降分辨率、卷积通道翻倍;时代印记是 Sigmoid + 平均池化(无 ReLU、无 max pooling)。

第77集(21:47):nn.Sequential 搭建 + net.apply 挂 Xavier 初始化(配 Sigmoid 防饱和)→ 逐层打印形状诊断 → GPU 训练:lr=0.9、10 epoch,测试精度 1 epoch 就破 0.7、之后 >0.98 ✅

第78集(30:08):QA 金句——首层卷积核可视化像"学到了眼睛"👁️;框架自动补批量维;换 ReLU 会更快;LeNet 太浅上不了 ImageNet,放大版就是 AlexNet(下一站)。

进度:▊▊▊▊▏▏▏▏▏▏ 40.8%(78/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=76
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=77
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=78

4.2 第79-81集:AlexNet——制霸 ImageNet 的起点 🚀

🔗 在线链接(订正版,以此为准):https://go.tabbit.site/projects/9JtezxTfet
(原链接 https://go.tabbit.site/projects/9qXmKwPn4R 已被上述订正链接替代,保留备查)
📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=79

集数时长主题一句话
7935:16AlexNet 理论ReLU+Dropout+GPU,2012 ILSVRC 冠军
8010:39代码Fashion-MNIST 上跑 AlexNet
8116:06QA为什么能赢、局部响应归一化
AlexNet 架构(2012)🚀
224×224×3 ─▶ Conv(96,11,s=4) → ReLU → MaxPool(3,s=2) → LRN
          ─▶ Conv(256,5,p=2) → ReLU → MaxPool(3,s=2) → LRN
          ─▶ Conv(384,3,p=1) → ReLU
          ─▶ Conv(256,3,p=1) → ReLU
          ─▶ Conv(256,3,p=1) → ReLU → MaxPool(3,s=2)
          ─▶ FC 4096→Dropout → FC 4096→Dropout → FC 1000
vs LeNet:更深(8层)、更宽(60M参数,约 LeNet 的 260 倍)、
ReLU替Sigmoid、Dropout防过拟合

详细总结

第79集(35:16):AlexNet 是 2012 年 ILSVRC 冠军,top-5 错误率 15.3% vs 第二名 26.2%,碾压式胜利引爆深度学习热潮 🔥。相比 LeNet 五大升级:ReLU 替代 Sigmoid(抗梯度消失)、最大池化、Dropout(p=0.5 防过拟合)、GPU 并行训练(两块 GTX 580)、数据增广(随机裁剪/翻转/颜色扰动);8 层 60M 参数,比 LeNet 大约 260 倍。局部响应归一化(LRN)模仿生物侧抑制,但后来被 BatchNorm 取代。

第80集(10:39):用 nn.Sequential 搭建完整 AlexNet;Fashion-MNIST 上复现时输入改 1 通道、输出改 10 类、分辨率放大到 224。三大全连接层参数占了大头,训练显存占用大,建议 batch_size 调小或用 GPU。

第81集(16:06):QA 三要素论——AlexNet 能赢因为算力(GPU)+ 数据(ImageNet)+ 算法(ReLU/Dropout/数据增广)三要素同时到位;LRN 现在基本不用了;Dropout 训练时随机丢、推理时关掉并按 p 缩放补偿权重。

进度:▊▊▊▊▏▏▏▏▏▏ 42.4%(81/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=79
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=80
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=81

4.3 第82-84集:VGG——积木化设计 🧱

🔗 在线链接:https://go.tabbit.site/projects/WEvbq2cq8m | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=82

集数时长主题一句话
8209:04VGG 理论全 3×3 小核 + VGG 块,深度换效果
8307:23代码vgg_block 复用,通道数÷4 省算力
8404:16QA2 个 3×3 ≈ 1 个 5×5
VGG-11 结构 🧱(每块:n×[3×3卷积+ReLU] → 2×2池化)
块1(1层,64) → 块2(1层,128) → 块3(2层,256) → 块4(2层,512) → 块5(2层,512) → FC×3
规则:块内通道统一,块间翻倍;长宽每块减半(空间↓ 通道↑)

详细总结

第82集(09:04):2014 年 ILSVRC 亚军(分类项)。核心贡献是把架构规则化、积木化:只用 3×3(p=1) 小核,堆出 VGG 块(n 个卷积 + 池化)。哲学:2 个 3×3 感受野 = 1 个 5×5,但参数 18 vs 25 更少、非线性更多 🎯。代价:139M 参数、计算巨大。

第83集(07:23):vgg_block(num_convs, in, out) 函数复用拼出 VGG-11;Fashion-MNIST 上把通道数 ÷4(ratio=4),精度基本不掉、算力省 16 倍 ✅

第84集(04:16):池化 vs stride=2 效果相近(ResNet 后流行用 stride);VGG 最深 19 层就到头,再深训练不稳定 → 埋下 ResNet 伏笔。

进度:▊▊▊▊▏▏▏▏▏▏ 44.0%(84/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=82
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=83
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=84

4.4 第85-87集:NIN——网络中的网络 🧩

🔗 在线链接:https://go.tabbit.site/projects/9ihZfb2T4u | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=85

集数时长主题一句话
8510:55NIN 理论1×1 卷积做微型 MLP + GAP 砍 FC
8610:02代码nin_block + AdaptiveAvgPool2d
8716:42QAGAP 为什么能替 FC
NiN 块 🧩(×4 堆叠)
普通卷积+ReLU → 1×1+ReLU → 1×1+ReLU
尾部:输出通道=类别数 → 全局平均池化 → Flatten → softmax
参数对比:AlexNet 60M / VGG 139M / NiN ≈2M 📉

详细总结

第85集(10:55):针对 FC 层参数大易过拟合的痛点,NIN 两大创新:① 1×1 卷积在每个像素位置做通道混合的微型 MLP;② 全局平均池化(GAP)直接砍掉全部 FC——每通道求均值当类别分数,无参数天然抗过拟合 ✅

第86集(10:02):nin_block 三明治结构(普通卷积 + 两个 1×1),4 块堆叠 + GAP + Flatten,最后一个 NiN 块输出通道 = 类别数 10,lr=0.1 训练轻快 ⚡

第87集(16:42):GAP 代价是信息压缩狠、收敛略慢;NiN 当时精度不拔尖没大红,但 1×1 + GAP 思想被 GoogLeNet/ResNet 继承发扬 🧬

进度:▊▊▊▊▊▏▏▏▏▏ 45.5%(87/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=85
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=86
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=87

4.5 第88-90集:GoogLeNet——Inception 四路并行 🌟

🔗 在线链接:https://go.tabbit.site/projects/rtGDnum5qw | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=88

集数时长主题一句话
8826:59GoogLeNet 理论Inception 块四路并行 + 1×1 瓶颈
8907:10代码Inception 类 + torch.cat 通道拼接
9016:33QA四路并行的动机、后续版本
Inception 块 🌟(四路并行 → 通道拼接)
① 1×1 ────────────────┐
② 1×1降维 → 3×3 ──────┤
③ 1×1降维 → 5×5 ──────┼─▶ torch.cat
④ 3×3池化 → 1×1 ──────┘
整体:stem → Inception×2/5/2/2 → GAP → FC
参数仅 6.8M(AlexNet 60M、VGG 139M 的零头)📉

详细总结

第88集(26:59):2014 冠军。核心:不知道选哪种核?四路全上让网络自己学;3×3/5×5 前先用 1×1 降通道(瓶颈层),计算量大降 ✂️。架构继承 NiN 的 1×1+GAP,分辨率逐段减半、通道逐段翻倍。

第89集(07:10):Inception 类四条 path + torch.cat(dim=1) 拼接,lr=0.1 训练,精度与 VGG 相当但参数小一个量级 ⚡

第90集(16:33):QA——瓶颈层省一个数量级计算;v2 加 BN、v3 分解卷积、v4 引入残差,一路进化到 Inception-ResNet 🧬

进度:▊▊▊▊▊▏▏▏▏▏ 47.1%(90/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=88
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=89
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=90

4.6 第91-93集:批量归一化 BN——训练稳定器 ⚖️

🔗 在线链接:https://go.tabbit.site/projects/RqqtvRUuef | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=91

集数时长主题一句话
9117:59BN 理论batch 内标准化 + γβ 缩放平移
9217:12代码从零 batch_norm + BatchNorm2d
9311:00QA为何有效、batch 小换 LayerNorm
BN 公式 ⚖️
x̂ = (x − μ_B) / √(σ²_B + ε)  →  y = γ·x̂ + β
全连接:按特征列统计 | 卷积:batch+空间维,逐通道
训练用 batch 统计,预测用移动平均(固定值)
位置惯例:卷积 → BN → 激活 ✅

详细总结

第91集(17:59):深层网络底层一动上层全乱 → BN 在每个 mini-batch 内标准化再缩放平移。γβ 可学习,能学回任意分布,不是硬约束 🔓。附带收益:训练稳可用更大 lr,batch 噪声自带正则 🎁

第92集(17:12):从零实现关键在 dim——全连接按 0、卷积按 (0,2,3) 逐通道;预测用移动平均、训练时同步更新(momentum=0.9)。LeNet 加 BN 后收敛更快、对 lr 更不敏感 ⚡

第93集(11:00):QA 金句——"缓解内部协变量偏移"是原解释,新研究(含李沐本人论文):BN 让损失面更平滑;batch 太小统计不准 → 换 LayerNorm(Transformer 标配);BN 与权重衰退不冲突(γ 抵消缩放)💡

进度:▊▊▊▊▊▏▏▏▏▏ 48.7%(93/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=91
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=92
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=93

4.7 第94-96集:ResNet——残差连接横空出世 🏆

🔗 在线链接:https://go.tabbit.site/projects/JkpvNpCMG2 | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=94

集数时长主题一句话
9414:10ResNet 理论y = f(x) + x,深网不再退化
9509:26代码Residual 类 + resnet18
9610:33QA梯度直达浅层的原因
残差块 🏆
x ──┬──▶ 3×3卷积→BN→ReLU→3×3卷积→BN ──┐
    │                                  +  ──▶ ReLU ──▶ out
    └──────── 恒等映射(1×1投影若需对齐)─┘
含义:网络学的是"修补量"而非"从零重建"

详细总结

第94集(14:10):痛点——深网加层反而退化(非过拟合)❌。解法:跳跃连接 y=f(x)+x,最差也能学到恒等,且加层=扩大函数类而非替换 ✅。2015 冠军,152 层深度从此可能,Transformer 也离不开残差 📈

第95集(09:26):Residual 类双卷积+BN,use_1x1 控制跳跃路径投影;resnet18 四阶段堆叠(每阶段首块 stride=2+投影、通道翻倍),Fashion-MNIST 精度稳定提升 ✅

第96集(10:33):QA——梯度可经跳跃直达浅层不衰减;恒等映射零参数,仅投影路径有 1×1 参数 💡

进度:▊▊▊▊▊▏▏▏▏▏ 50.3% 🎉(96/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=94
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=95
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=96

4.8 第97-98集:ResNet 的梯度计算 + QA——数学收官 🏁

🔗 在线链接:https://go.tabbit.site/projects/NnaFg3AGmC | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=97

详细总结

第97集(08:22):为什么残差训得动?两条数学线索 🧮

  • 梯度视角:普通深网梯度是 ∏Wᵢ 连乘,极易消失/爆炸;ResNet 的 x_L = x₀ + Σfᵢ(·),梯度里恒有"1"保底,反向传播永远有通路 ➕
  • 优化视角:泰勒展开下 f 只需逼近残差 x*−x,"当前解 + 修正量"的误差修正器模式,最差退化回浅网、不会更糟 🎯

第98集(02:17):快问快答——残差与 BN 相辅相成(BN 稳分布、残差保梯度);现代 Transformer/LLM 每个子层的 Add & Norm 就是残差的直系后代,这套思想贯穿至今 💡

进度:▊▊▊▊▊▏▏▏▏▏ 51.3%(98/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=97
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=98

🏁 至此第二部分(CNN 理论线)完整收官——从卷积原理到 LeNet→AlexNet→VGG→NiN→GoogLeNet→BN→ResNet 的完整演进链已打通。


第五章 单机多卡与分布式训练(第 104-111 集)

5.1 第104-108集:单机多卡并行

🔗 在线链接:https://go.tabbit.site/projects/7YBX9GKEw9 | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=104

集数时长主题一句话
10406:59单机多卡并行数据并行:切 batch 不切模型
10503:56QA通信开销与方案选择
10621:41从零实现手动拆 batch 到各卡
10711:53简洁实现nn.DataParallel 一行搞定
10820:40QA大 batch 训练要点

详细总结

第104集(06:59)🖥️:三种并行方式对比——数据并行(每卡完整模型+切 mini-batch,梯度 all-reduce 求平均)是绝对主流,因为“求平均”通信简单、扩展近线性;模型并行只在单卡装不下时才用。

第105集(03:56)❓:总 batch = 每卡 batch × 卡数,等效大 batch 记得调 lr。

第106-107集(21:41 / 11:53)💻:从零版手动把参数和 batch 分发到各卡、梯度汇聚平均后广播;框架版 nn.DataParallel 一行搞定(现代推荐 DDP 多进程更快)。双卡 LeNet 实测 ≈1.9x 加速 📈

第108集(20:40)❓:大 batch 三件事——等效 lr 放大、warmup 防震荡、BN 统计反而更准受益 💡

进度:▊▊▊▊▊▏▏▏▏▏ 56.5%(108/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=104
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=105
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=106
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=107
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=108

5.2 第109+111集:分布式训练——瓶颈在机间带宽

🔗 在线链接:https://go.tabbit.site/projects/pwZcLBzPXR | 📺 视频入口:https://www.bilibili.com/video/BV1daQAYuEYm/?p=109

详细总结

第109集(21:45)🌐:

  • 数据并行延伸到多机:梯度要跨机 all-reduce,机间带宽(以太网/IB)远低于卡间(NVLink),通信成为大头;
  • 梯度压缩技巧:loss 先 scale 放大 → 梯度变大 → 转 16bit 舍入误差小 → 同步完再缩回 📉;
  • 同步收敛稳(主流)vs 异步吞吐高但梯度延迟(stale gradient)伤收敛 ⏱️。

第111集(09:00)❓:

  • 加速比上不去 → 减少同步频率 / 压缩梯度 / 上 IB 网络;
  • 异步是参数服务器时代的方案,现已被淘汰。

进度:▊▊▊▊▊▏▏▏▏▏ 58.1%(111/191)

📺 原视频:

  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=109
  • https://www.bilibili.com/video/BV1daQAYuEYm/?p=111

🏁 阶段收官与下一站

本阶段从房价竞赛复盘出发,补齐了 nn.Module 块思想与 GPU 基本功;随后打通完整 CNN 理论线——两条先验推导出卷积,再沿 LeNet→AlexNet→VGG→NIN→GoogLeNet→BN→ResNet 走完经典演进;最后落地单机多卡与分布式并行。

下一站:第 110 集《单机多卡简洁实现》、第 112-113 集《数据增广 + QA》🌈

下一站:第 110 集《单机多卡简洁实现》、第 112-113 集《数据增广 + QA》🌈

更多推荐