d2l-zh:70多国500所高校选用的深度学习教材
基本信息
- 描述: 《动手学深度学习》中文版开源教材,面向中文读者提供可运行、可讨论的深度学习学习资源,已被 70 多个国家的 500 多所高校采用。
- 语言: Python
- 星标: 76,313 (+46 stars today)
- 链接: https://github.com/d2l-ai/d2l-zh
- DeepWiki: https://deepwiki.com/d2l-ai/d2l-zh
DeepWiki 速览(节选)
Relevant source files
- INFO.md
- README.md
- STYLE_GUIDE.md
- chapter_introduction/index.md
- chapter_introduction/index_origin.md
- chapter_multilayer-perceptrons/kaggle-house-price_origin.md
- chapter_multilayer-perceptrons/underfit-overfit_origin.md
- img/koebel.jpg
- static/frontpage/_images/huliujun.jpg
- static/frontpage/_images/wugaosheng.jpg
- static/frontpage/_images/xiejiehang.jpg
- static/frontpage/_images/zhangge.jpg
- static/frontpage/frontpage.html
The D2L.ai repository is an open-source project that provides a comprehensive deep learning educational resource known as “动手学深度学习” (Dive into Deep Learning). This repository contains the source code for a textbook with executable code examples that work across multiple deep learning frameworks including PyTorch, MXNet, TensorFlow, and PaddlePaddle.
摘要
d2l-ai/d2l-zh 仓库总结
基本信息
仓库名称:d2l-ai/d2l-zh(动手学深度学习中文版)
编程语言:Python
星标数:76,313(截至目前,仍在增长)
项目概述
d2l-zh 是《动手学深度学习》(Dive into Deep Learning,简称D2L)的中文版开源项目。该项目是一套面向中文读者的深度学习教材,具有以下核心特点:
- 可运行性:所有代码示例均可实际执行,理论与实践相结合
- 跨框架支持:代码兼容多种主流深度学习框架,包括 PyTorch、MXNet、TensorFlow 和 PaddlePaddle
- 互动性:支持读者之间的讨论和交流
国际影响力
该项目已被全球70多个国家的500多所大学采用作为教学资源,体现了其在深度学习教育领域的重要地位。
项目结构
仓库包含丰富的教学资源,涵盖:
- 核心文档:INFO.md、README.md、STYLE_GUIDE.md
- 章节内容:包括深度学习基础、多层感知机、房价预测、过拟合与欠拟合等主题
- 多媒体资源:教学图片和页面素材
核心价值
作为开源教育资源,d2l-zh 为中文学习者提供了高质量的深度学习学习材料,降低了学习门槛,促进了深度学习知识在中文社区的传播与发展。
1. 技术架构深度剖析
技术栈与架构模式
该仓库采用了文档-代码一体化的混合架构模式,核心组成部分包括:
- 内容层:Markdown 格式的教材文本,按章节组织(chapter_* 目录结构)
- 代码层:Jupyter Notebook 格式的可执行代码,与文档紧密耦合
- 框架抽象层:通过
d2l包提供统一的 API 抽象,兼容 PyTorch、TensorFlow、MXNet 三大框架
核心模块结构
d2l-zh/
├── chapter_introduction/ # 深度学习概述
├── chapter_multilayer-perceptrons/ # 多层感知机
├── chapter_convolutional-neural-networks/ # CNN
├── chapter_recurrent-neural-networks/ # RNN
├── chapter_attention-mechanisms/ # 注意力机制
├── d2l/ # 核心工具库
│ ├── torch.py # PyTorch 实现
│ ├── tensorflow.py # TensorFlow 实现
│ └── mxnet.py # MXNet 实现
└── utils/ # 辅助工具
技术亮点
多框架一致性设计:通过适配器模式,d2l 包为不同框架提供统一接口。例如 d2l.data_iter、d2l.train_ch3 等函数在不同框架下行为一致,降低学习迁移成本。
渐进式复杂度设计:从基础概念逐步引入复杂模型,每章代码可独立运行,避免"一上来就完整的复杂模型"的教学断层。
2. 核心功能详细解读
主要功能
| 功能 | 描述 | 使用场景 |
|---|---|---|
| 教材内容 | 系统的深度学习理论讲解 | 课堂教学、自学 |
| 可执行代码 | 每个概念的即时可运行实现 | 边学边练、实验探索 |
| 多框架实现 | 同一算法的多种框架版本 | 框架学习、对比分析 |
| 练习题 | 章后巩固练习 | 知识检验 |
解决的痛点
传统深度学习教学存在三个割裂:理论与代码割裂(教材讲理论、代码单独放)、框架与框架割裂(学 PyTorch 不会 TensorFlow)、概念与实现割裂(懂原理但写不出来)。d2l-zh 通过将三者融合在同一文档中解决。
与同类对比
相比 Andrew Ng 的 Coursera 课程(偏应用、框架单一)、Fast.ai(偏实践、理论薄弱),d2l-zh 在理论与代码的均衡性和多框架覆盖上具有优势,但作为书籍类教材,缺乏交互式反馈机制。
4. 适用场景分析
适合场景
教学场景(强推荐):作为教材配套资源,教师可直接使用章节作为讲义,学生可运行代码加深理解。
入门学习(强推荐):零基础学习者可以从第一章逐步推进,每步都有即时反馈。
框架对比学习(推荐):已有某框架基础,想快速了解另一框架语法时,对比同一算法的不同实现。
不适合场景
生产环境参考:代码未考虑部署、监控、分布式等生产需求,直接用于项目风险较高。
高级研究参考:侧重基础概念,高级主题(如模型量化、分布式训练)覆盖有限。
评论
总体判断: d2l-zh 是目前中文深度学习教育领域最具影响力的开源项目之一,其核心价值在于将理论教学与可执行代码深度融合,形成了独特的"教科书即Notebook"范式,在高等教育普及方面成效显著,但在工业级最佳实践的即时同步方面存在一定滞后。
技术分析
3. 技术实现细节
关键设计:框架抽象层
| |
这种设计将数据处理、模型训练、可视化等通用操作抽象为统一接口,用户切换框架时代码改动最小。
代码组织特点
- 命名规范:遵循 STYLE_GUIDE.md 的统一规范,函数命名采用
verb_noun模式 - 注释密度:关键数学公式后附带代码实现,便于对照理解
- 依赖管理:requirements.txt 明确版本约束,避免依赖冲突
性能考量
代码优先保证可读性而非极致性能。例如使用简单的随机梯度下降而非最优的生产级优化器,用小规模数据集演示概念而非追求 benchmark 排名。
5. 发展趋势展望
技术演进方向
从仓库活跃度看,项目正逐步向更新框架版本和补充新章节方向发展。近期可能引入大语言模型、扩散模型等前沿内容。
改进空间
- 缺少交互式评估:无在线运行能力(相比 Google Colab 集成)
- 版本同步延迟:框架 API 快速演进,部分代码可能过时
- 缺乏中文社区运营:Issues 响应不如英文版活跃
与前沿技术结合
可探索的方向包括:大模型应用的补充章节、与 Hugging Face 生态的整合、在线实验平台的集成。
6. 学习建议
适用人群
- 初级:了解 Python 基础、高数/线代基本概念
- 中级:已有机器学习经验,想系统化深度学习知识
- 不适合:已熟练使用深度学习框架做项目的人员
推荐学习路径
第1阶段(第1-4章):掌握基础概念
↓
第2阶段(第5-8章):学习核心模型
↓
第3阶段(第9-12章):进阶技术与实践
↓
第4阶段:选择感兴趣方向深耕
实践建议
- 每章必跑代码:只看不动手等于没学
- 做笔记而非复制:用自己的语言总结关键点
- 对比实验:修改超参数观察结果变化
- 完成习题:巩固每个章节的核心知识点
代码示例
| |
| |
- 若系统内存充足,可在
num_workers较小时开启prefetch_factor(如 2)进一步提升预取效率。
预期效果: 数据加载阶段耗时可降低约 30%–50%,整体训练速度提升约 10%–20%(取决于模型计算量与数据读取比例)。
优化 2:混合精度训练(AMP)
说明:
使用半精度(FP16)或 BF16 进行前向传播与梯度计算,可在保持模型精度的前提下显著加速矩阵运算并降低显存占用。PyTorch 自 1.6 起提供 torch.cuda.amp 自动混合精度(Automatic Mixed Precision, AMP)接口,使用门槛低。
实施方法:
- 在模型和优化器创建后,实例化
GradScaler用于梯度缩放,防止下溢。1 2from torch.cuda.amp import autocast, GradScaler scaler = GradScaler() - 将前向传播包装在
autocast()中:1 2 3 4 5 6 7 8 9for data, target in train_loader: data, target = data.cuda(), target.cuda() optimizer.zero_grad() with autocast(): output = model(data) loss = loss_fn(output, target) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update() - (可选)对 loss 或特定层使用
torch.float32以避免精度损失。
预期效果: 训练速度提升 20%–40%,显存使用下降约 30%–50%;在不支持 Tensor Core 的旧 GPU 上仍可获得 10%–20% 的加速。
优化 3:使用 torch.compile 对模型进行 JIT 编译(PyTorch 2.0+)
说明:
torch.compile 将模型的 Python 代码即时编译为优化的 CUDA 内核,减少运行时解释开销并启用更多kernel融合,提升推理和训练吞吐量。
实施方法:
- 确认 PyTorch 版本 ≥ 2.0。
- 在模型实例化后将模型传入
torch.compile:1 2model = Model(...).cuda() model = torch.compile(model, mode='reduce-overhead') # 可选 'default', 'max-autotune' - 若模型在训练过程中会动态改变结构(如
BatchNorm更新),请确保在forward中使用torch.nn.odule的标准写法,避免在编译后直接修改子模块。 - 如遇到兼容性问题,可先在推理阶段使用
torch.inference_mode()验证。
预期效果: 端到端训练速度提升 10%–30%(取决于模型结构与计算密集度),在部分卷积或线性层融合后可实现更高的加速比。
优化 4:梯度累积实现更大有效批大小
说明: 显存限制导致单卡难以使用大 batchsize。使用梯度累积可以在不增加显存占用的前提下模拟更大的 batch,从而提升模型收敛速度并保持训练的稳定。
实施方法:
- 在训练循环中设置
accum_steps(累积步数)和effective_batch_size = batch_size * accum_steps。1 2 3 4 5 6 7 8 9 10accum_steps = 4 optimizer.zero_grad() for i, (data, target) in enumerate(train_loader): data, target = data.cuda(), target.cuda() output = model(data) loss = loss_fn(output, target) / accum_steps loss.backward() if (i + 1) % accum_steps == 0: optimizer.step() optimizer.zero_grad()
学习要点
- d2l-zh 是《动手学深度学习》中文译本,提供系统化的深度学习理论与实现,覆盖从基础到前沿的全部内容(最重要)
- 每章配套 Jupyter Notebook 示例代码,兼容 PyTorch、TensorFlow 等主流框架,便于动手实验
- 内容结构清晰,涵盖机器学习基础、卷积神经网络、循环神经网络、注意力机制、模型优化等核心概念
- 项目在 GitHub 上保持活跃,社区持续贡献勘误、翻译改进和新章节,保持内容时效性
- 因在 GitHub Trending 榜单上出现,说明其在中文开源社区的关注度高,影响力大
- 提供配套教学视频和习题,帮助学习者巩固概念并进行自测,提升学习效果
- 遵循开源许可证,可自由复制、使用和修改,适用于课堂教学和工业培训
学习路径
阶段 1:入门基础
学习内容:
- Python 编程基础(变量、数据类型、控制流程、函数)
- 基本数据结构(列表、元组、字典、集合)
- 文件操作与异常处理
- 面向对象编程概念
推荐资源:
- 《Python编程:从入门到实践》
- Codecademy Python 课程
- 菜鸟教程 Python 基础
学习目标: 完成基础语法学习,能够独立编写简单脚本
阶段 2:核心技能
学习内容:
- NumPy 数值计算基础
- Pandas 数据处理与分析
- Matplotlib/Seaborn 数据可视化
- 数据清洗与预处理技术
推荐资源:
- 《利用Python进行数据分析》
- Kaggle Python 教程
- Pandas 官方文档
学习目标: 熟练进行数据处理和可视化分析
阶段 3:进阶提升
学习内容:
- Scikit-learn 机器学习库
- 常用机器学习算法(回归、分类、聚类)
- 模型评估与参数调优
- 特征工程技术
推荐资源:
- 《机器学习实战》
- 吴恩达机器学习课程(Coursera)
- Kaggle 入门竞赛
学习目标: 能够独立完成基础机器学习项目
阶段 4:专业方向
学习内容:
- 深度学习框架(TensorFlow/PyTorch)
- 神经网络基础与实战
- 特定领域深入(NLP/CV/推荐系统)
- 持续关注前沿技术
推荐资源:
- Fast.ai 深度学习课程
- PyTorch 官方教程
- 技术博客与论文阅读
学习目标: 在选定方向具备实战能力,能独立完成复杂项目
实践建议
- 动手实践: 每学完一个知识点立即动手实践
- 项目驱动: 完成 3-5 个完整的数据分析项目
- 参与社区: 加入技术社区交流学习经验
- 持续迭代: 定期复盘总结,形成自己的知识体系
常见问题
1: d2l‑zh 是什么?它与英文版的 Dive into Deep Learning(D2L)有什么区别?
1: d2l‑zh 是什么?它与英文版的 Dive into Deep Learning(D2L)有什么区别?
A:
d2l‑zh(https://github.com/d2l-ai/d2l-zh)是 Dive into Deep Learning(简称 D2L)一书的 中文社区翻译版。英文原版由 Aston Zhang、Zachary C. Lipton、Mu Li、Alexander J. Smola 等作者编写,涵盖了从基础数学到最新模型(如 Transformer、GAN、推荐系统等)的完整深度学习知识体系。
主要区别如下:
| 项目 | 英文版(d2l) | 中文版(d2l‑zh) |
|---|---|---|
| 语言 | 英文 | 中文 |
| 维护方 | 原作者 + 官方团队 | 社区志愿者(d2l‑ai 组织) |
| 内容覆盖 | 与官方出版《Dive into Deep Learning》同步 | 与英文版同步翻译,部分章节可能略有滞后 |
| 出版形式 |
实践建议
针对 d2l-ai / d2l-zh(中文《动手学深度学习》)的 5‑7 条实践建议
(所有建议均可直接在本地或 JupyterHub 上操作,均提供可执行的命令或步骤)
1. 环境准备与依赖统一
- 使用官方提供的环境文件:
environment.yml(Conda)或Dockerfile。
Conda 方式
conda env create -f environment.yml conda activate d2l-zh
引用
- GitHub 仓库: https://github.com/d2l-ai/d2l-zh
- DeepWiki: https://deepwiki.com/d2l-ai/d2l-zh
注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。