李宏毅深度学习作业集 leedl-tutorial:3 步上手 15 个 PyTorch 实战 Notebook
【免费下载链接】leedl-tutorial《李宏毅深度学习教程》(李宏毅老师推荐👍,苹果书🍎),PDF下载地址:https://github.com/datawhalechina/leedl-tutorial/releases项目地址: https://gitcode.com/GitHub_Trending/le/leedl-tutorial
leedl-tutorial 是 Datawhale 整理的李宏毅《机器学习》课程作业中文实现,包含 15 份 PyTorch 实战 notebook 与配套讲义 PDF,覆盖从回归、分类到领域适配、元学习的完整路线,适合想动手系统练习深度学习的入门者,也适合在少量标注数据场景下寻找可运行参考实现的人。
🎯 痛点与适用场景
目标数据没有标签
做迁移或少样本任务时,最常见的困境是:有标签的源数据充足,目标数据却一片空白。HW11 的作业设定就是这个场景——用真实照片训练,对手绘涂鸦(无任何标签)做识别,逼你只靠特征本身解决问题,而不是堆更多标注数据。
想亲手验证算法,而不是只看概念
MAML 的 fast weights、DANN 的梯度反转,看十遍 PPT 不如自己填一次 TODO。本仓库每个作业都把关键实现留空,Homework/readme.md 中 15 份作业全部已完成(checklist 全勾),你可以边做边对照讲义逐格验证。
🚀 三步快速上手
第一步:克隆仓库
git clone https://gitcode.com/GitHub_Trending/le/leedl-tutorial15 份作业都在Homework/下,每个目录配有.ipynb和同名讲义.pdf,例如 HW15-MetaLearning.ipynb 与 HW15.pdf。
第二步:配置运行环境
多数作业面向 Google Colab 免费 GPU,先跑 Google_Colab_Tutorial.ipynb 和 Pytorch_Tutorial_2.ipynb 两份热身。注意 notebook 内数据路径形如../input/ml2022spring-hw15/omniglot,按各 notebook 内的下载说明把数据放到对应目录即可。
第三步:运行首个 notebook
从 HW1 回归开始:默认n_epochs=3000,训练记录会自动写入 tensorboard,完成后运行%tensorboard --logdir=./runs/就能直接看到损失曲线,确认环境无误后再按分类、CNN 顺序推进。
⚙️ 核心原理拆解
仓库按"数据/标签不足"的不同成因拆成几条独立技术路线,各自对应一个可运行的作业:
| 路线 | 核心思路 | 适用场景 | 对应作业 |
|---|---|---|---|
| 领域对抗训练(DaNN) | 特征提取器、分类器与域分类器联合训练并插入梯度反转,让域分类器"学不会",从而逼出域不变特征 | 源域有标签、目标域无标签 | HW11 |
| 元学习(MAML) | 双层优化:外层学"易适应"的初始化,内层用 support set 少量梯度步快速收敛到新任务 | 5-way 1-shot 等少样本分类 | HW15 |
| 终身学习(SCP) | 持续吸收新任务,用经验回放抑制灾难性遗忘 | 模型不断遇到新类别 | HW14 |
| 迁移学习(微调) | 直接复用 base 模型学到的表示,少训几个 epoch | 最简基线,用于对比 | HW15 的 base solver |
HW11 用真实照片训练、涂鸦识别的场景解释了为什么需要领域适配:
HW14 则把终身学习的各方法归纳成一张总览图:
📊 实测与效果数据
以下数字全部来自 notebook 内预置的训练输出与统计,可直接打开验证:
| 指标 | 具体数值 | 出处 |
|---|---|---|
| MAML 训练精度 | 26.7% 提升至 84.8%(30 epochs) | HW15 notebook 输出 |
| MAML 验证精度 | 训练末段 78%,峰值 85% | 同上(5-way 1-shot,Omniglot 28x28) |
| DaNN 参数量 | 特征提取器 2,142,336 / 分类器 530,442 / 域分类器 1,055,233 | HW11 notebook 训练统计 |
| DaNN 训练耗时(Colab) | Simple 约 1 小时;Strong 5~6 小时 | 同上 |
| 知识蒸馏教师模型 | RestNet 测试精度约 89.9% | HW13 notebook 注释 |
这张 HW11 的曲线恰好说明了 DANN 的"成功判据":训练精度(红)收敛到约 0.98 后,域分类精度(黄)被压到 0.54 附近——域分类器基本失效——而测试精度(绿)随之升到 0.73 并继续缓慢上升,所以 notebook 才提醒训练 200 epoch 后仍值得继续训练。
⚠️ 实战注意事项
- MAML 需要自己填实现:notebook 把 First Order MAML 留成 TODO,讲义 HW15.pdf 第 25 页有伪代码,建议先开
FO=True跑通再写完整版本。 - 内外层学习率是配套的:默认
inner_lr=0.4、meta_lr=0.001,动其中一个就要重新观察训练精度曲线,不要孤立调参。 - 两条 solver 路线的 epoch 差 6 倍:base solver 只跑 5 epochs,meta solver 跑 30 epochs,对比实验时先确认跑的是哪条路线。
- lambda 是固定值:HW11 取
lambda=0.1,原论文中它是自适应的,结果波动时可从这里入手调整。 - 预留 GPU 时间:HW11 的 Strong 基线在 Colab 上需要 5~6 小时,先用 Simple 档位验证代码正确性再升级。
📚 资源导航
- 全部 15 份作业清单:Homework/readme.md
- 元学习实战:HW15-MetaLearning.ipynb
- 领域对抗训练:HW11-Adaptation.ipynb
- 终身学习:HW14-LifeLongMachineLearning.ipynb
- 环境热身教程:Homework/Warmup/
- 纸质版勘误修订表:docs/errata.md
这份仓库的价值在于"每个概念都有可运行 notebook、每个 notebook 都留了动手空格"。建议按 Warmup → HW1/HW2 → HW15 的顺序走,用 5-way 1-shot 的 Omniglot 配置亲手实现一遍 First Order MAML,把从"大量数据"到"少量数据"的完整链路跑通,再回头对照 HW11、HW14 扩展到其他路线。
【免费下载链接】leedl-tutorial《李宏毅深度学习教程》(李宏毅老师推荐👍,苹果书🍎),PDF下载地址:https://github.com/datawhalechina/leedl-tutorial/releases项目地址: https://gitcode.com/GitHub_Trending/le/leedl-tutorial
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考