news 2026/10/1 8:48:08

D2L(Dive into Deep Learning)开源交互式深度学习教材:多框架代码、数学与社区讨论的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
D2L(Dive into Deep Learning)开源交互式深度学习教材:多框架代码、数学与社区讨论的完整指南
  • 文档
  • 教程
  • 人工智能
  • 深度学习
  • NLP
  • 计算机视觉
  • 强化学习

【免费下载链接】d2l-en

Interactive deep learning book with multi-framework code, math, and discussions. Adopted at 500 universities from 70 countries including Stanford, MIT, Harvard, and Cambridge.

项目地址:https://gitcode.com/gh_mirrors/d2/d2l-en
点击查看免费下载

D2L(Dive into Deep Learning,动手学深度学习)是一个开源的交互式深度学习教材项目,其核心理念是"Learning by doing"——将概念、上下文与代码融合在同一个 Jupyter Notebook 中,让读者在动手运行代码的过程中掌握深度学习。本文基于仓库根目录的 README.md 展开,结合 d2l 包、构建配置、安装指南 与 贡献指南 等仓库资源,系统梳理这个项目的定位、目标、仓库结构、多框架支持方式、安装运行流程、内容组织、贡献方式与许可协议,帮助你快速理解并上手这一广受欢迎的深度学习学习资源。

项目定位:一本"教科书 + 可运行代码"合二为一的交互式教材

正如 README.md 所述,D2L 是一个多框架(multi-framework)的开源深度学习教材:全书以 Jupyter Notebook 为载体撰写,将叙述文字(exposition)、图表(figures)、数学公式(math)与自包含的可运行代码(self-contained code)无缝整合在一起。

它的目标读者是希望系统掌握深度学习实战技能的开发者:书中不仅讲解"如何实现某个算法",还说明"为什么做出这样的算法决策"。这种"概念 + 上下文 + 代码"三位一体的写法,让它区别于两类常见资源:

  • 只贴代码片段、不讲原理的博客与 GitHub 示例;
  • 只讲数学、不附可运行实现的传统教科书。

关于这一点,前言 中有更完整的阐述:作者在项目启动时发现,市场上同时满足"内容与时俱进、覆盖现代机器学习实践且有足够技术深度、将教科书级讲解与干净可运行的代码交织在一起"的资源几乎不存在,因此决定自行构建这套工作流——用 GitHub 托管源码并吸纳社区贡献,用 Jupyter Notebook 混合代码、公式与文字,用 Sphinx 作为渲染引擎,并配合 Discourse 讨论社区。

五大设计目标

README.md 明确列出了该项目要达成的五个目标,它们共同决定了 D2L 的形态:

  1. 对所有人免费开放(freely available for everyone)——仓库以开源协议发布,见下文许可证小节;
  2. 提供足够的技术深度,使其成为通往"应用机器学习科学家"之路的起点;
  3. 包含可运行代码,展示读者在实践中如何解决实际问题;
  4. 支持快速更新,既可由作者团队更新,也可由整个社区推动;
  5. 配套讨论论坛,用于互动讨论技术细节并解答疑问。

这五个目标在实现层面常有冲突:公式、定理与引用最适合用 LaTeX 管理;代码最适合用 Python 描述;网页原生是 HTML 和 JavaScript;而内容又需要同时以可执行代码、实体书、可下载 PDF 和网页四种形态呈现。最终作者选择了 GitHub + Jupyter Notebook + Sphinx + Discourse 的组合方案,这也是本仓库采用"Markdown 文件即 Notebook 源文件"结构的原因。

仓库结构:从 Markdown 源文件到可执行 Notebook

全书目录骨架

本仓库的根目录 index.md 是整本书的目录(table of contents),可以直观看到内容的编排脉络:

  • 导言部分:前言、安装、符号约定;
  • 正文 22 章:从 引言、预备知识(ndarray、自动微分、线性代数、概率等)开始,经过线性回归、线性分类、多层感知机、模型构建、卷积神经网络、循环神经网络、注意力机制与 Transformer、优化算法、计算性能、计算机视觉、NLP 预训练与应用、强化学习、高斯过程、超参数优化、生成对抗网络、推荐系统,直到附录的数学基础与工具章节;
  • 参考文献:chapter_references/zreferences.md。

每章都是一个独立的chapter_xxx/目录,内部以index.md为章节入口,各小节对应一个 Markdown 文件(如 chapter_linear-regression/linear-regression.md)。每个小节就是一个"可独立运行的 Notebook"。

构建配置:Markdown 即 Notebook

config.ini 的[build]段揭示了这套工作流的构建规则:

[build] # A list of wildcards to indicate the markdown files that need to be evaluated as # Jupyter notebooks. notebooks = *.md */*.md # A list of files that will be copied to the build folder. resources = img/ d2l/ d2l.bib setup.py static/latex_style/ # Files that will be skipped. exclusions = README.md STYLE_GUIDE.md INFO.md CODE_OF_CONDUCT.md CONTRIBUTING.md contrib/*md # If True (default), then will evaluate the notebook to obtain outputs. eval_notebook = True tabs = pytorch, mxnet, jax, tensorflow

要点:

  • notebooks = *.md */*.md:仓库内所有 Markdown 文件都会被当作 Jupyter Notebook 源文件来求值执行;
  • eval_notebook = True:构建时默认执行 Notebook 以生成输出,这也是 贡献指南 要求贡献者在提交前清空所有输出的原因——CI 系统会重新执行被修改的章节来生成输出;
  • tabs:支持 PyTorch、MXNet、JAX、TensorFlow 四种框架的 Tab 切换展示。

多框架支持:一套书、四种深度学习框架

D2L 最突出的特点之一就是同一份内容提供四种框架的实现:PyTorch、MXNet、TensorFlow 与 JAX。这一点在代码层通过d2l包实现。

d2l 包的导入方式

d2l/init.py 的模块 docstring 给出了四种标准的导入方式:

"""Saved source code for "Dive into Deep Learning" (https://d2l.ai). Please import d2l by one of the following ways: from d2l import mxnet as d2l # Use MXNet as the backend from d2l import torch as d2l # Use PyTorch as the backend from d2l import tensorflow as d2l # Use TensorFlow as the backend from d2l import jax as d2l # Use Jax as the backend """ __version__ = "1.0.3"

即d2l是一个多后端封装包,同一套 API 名称(如d2l.plot、d2l.train_ch3、d2l.nn_Module等)分别映射到四种框架的实现。四个后端文件分别为 d2l/mxnet.py、d2l/torch.py、d2l/tensorflow.py、d2l/jax.py。

框架别名映射机制

config.ini 的[library-*]段定义了d2l.xxx到各框架原生 API 的映射规则,这是"多框架代码"能写在同一章节的关键机制。以 [library-pytorch] 段为例:

[library-pytorch] lib_file = d2l/torch.py lib_name = torch simple_alias = ones_like, ones, zeros_like, zeros, tensor, arange, meshgrid, sin, sinh, cos, cosh, tanh, linspace, exp(, log, normal, rand, randn, matmul, int32, int64, float32, concat -> cat, stack, abs, eye, sigmoid, batch_matmul -> bmm fluent_alias = numpy -> detach().numpy, size -> numel, reshape, to, reduce_sum -> sum, argmax, astype -> type, transpose -> t, reduce_mean -> mean, expand_dims -> unsqueeze, swapaxes, repeat alias = nn_Module = nn.Module

它把d2l.concat映射为 PyTorch 的torch.cat、d2l.transpose映射为t、d2l.size映射为numel、d2l.nn_Module映射为nn.Module等。类似的[library-mxnet]、[library-tensorflow]、[library-jax]段则完成其他框架的等价映射(如 MXNet 的npx.sigmoid、JAX 的jax.nn.sigmoid)。这种"d2l.xx 统一命名 + 构建期翻译"的设计,让书中同一个代码块可以在四个框架下原样运行,也是 config.ini 中tabs配置的底层支撑。

从源码结构看,d2l各后端文件还自动汇集了全书通过#@save标记沉淀下来的常用函数与类,例如 d2l/torch.py 中的use_svg_display、set_figsize、plot、add_to_class、HyperParameters等绘图与面向对象辅助工具,其 docstring 中标注了各自定义所在章节(如Defined in :numref:sec_calculus``、sec_oo-design)。

d2l 工具包:轻量依赖与版本信息

依赖清单

setup.py 定义了d2l包的安装元数据与运行时依赖,可以看到这个"教科书配套包"非常轻量:

requirements = [ 'jupyter==1.0.0', 'numpy==1.23.5', 'matplotlib==3.7.2', 'matplotlib-inline==0.1.6', 'requests==2.31.0', 'pandas==2.0.3', 'scipy==1.10.1' ]

除数值计算、绘图、数据处理等基础库外,并不捆绑任何深度学习框架——框架由读者按需另行安装(见下一节)。同时python_requires='>=3.8'表明至少需要 Python 3.8 以上版本。构建配置 config.ini 中release = 1.0.3与d2l.__version__ = "1.0.3"保持一致,即当前仓库对应的发布版本为 1.0.3。

安装与上手:从零开始跑通全书代码

README.md 并未展开安装细节,完整的安装流程在 安装指南 中。以下是该章节的完整实操路径,与 README 的"下载 Notebook 运行全书代码"相衔接。

第一步:安装 Miniconda 并创建环境

最简单的方式是安装 Miniconda(要求 Python 3.x)。以 macOS(Intel)为例:

# 文件名可能随版本变化 sh Miniconda3-py39_4.12.0-MacOSX-x86_64.sh -b

Linux 用户下载含 "Linux" 字样的脚本执行:

sh Miniconda3-py39_4.12.0-Linux-x86_64.sh -b

Windows 用户则按官方在线指引安装,并可用cmd打开命令行。接着初始化 shell 并创建、激活名为d2l的环境:

~/miniconda3/bin/conda init conda create --name d2l python=3.9 -y conda activate d2l

第二步:安装深度学习框架与 d2l 包

安装框架前建议先确认机器是否有可用的 NVIDIA GPU(笔记本上的显示 GPU 不在此列;若无 GPU,CPU 也足够跑完前几章)。四种框架的版本要求如下:

  • PyTorch:pip install torch==2.0.0 torchvision==0.15.1
  • TensorFlow:pip install tensorflow==2.12.0 tensorflow-probability==0.20.0
  • MXNet:GPU 版pip install mxnet-cu112==1.9.1(后缀按 CUDA 版本调整,如cu101对应 CUDA 10.1);CPU 版pip install mxnet==1.9.1
  • JAX:GPU 版pip install "jax[cuda11_pip]==0.4.13" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html flax==0.7.0;CPU 版pip install "jax[cpu]==0.4.13" flax==0.7.0

然后安装本书配套的d2l包(版本与仓库一致):

pip install d2l==1.0.3

第三步:下载 Notebook 并启动 Jupyter

可以从 D2L 网站点击 "Notebooks" 标签下载代码压缩包,也可以在命令行获取。以 PyTorch 版本为例:

mkdir d2l-en && cd d2l-en curl https://d2l.ai/d2l-en-1.0.3.zip -o d2l-en.zip unzip d2l-en.zip && rm d2l-en.zip cd pytorch

(MXNet、TensorFlow、JAX 分别进入mxnet、tensorflow、jax子目录;若没有unzip,先执行sudo apt-get install unzip。)最后启动服务器:

jupyter notebook

在浏览器打开http://localhost:8888即可逐节运行全书代码。注意:每次打开新的命令行窗口,都需要先conda activate d2l再运行 Notebook 或升级框架/d2l包;退出环境用conda deactivate。

内容组织与教学法:三大部分、循序渐进

前言 将全书划分为三个部分,这与 index.md 的目录一一对应:

  • 第一部分:基础与预备知识——引言 引入机器学习与深度学习的概念(数据、模型、目标函数、优化算法四大核心组件,以及监督学习、回归、分类、标记、搜索、推荐系统、序列学习等问题类型);预备知识 快速补齐数据操作、线性代数、微积分、概率等基础;随后进入线性回归、线性分类、多层感知机、过拟合与正则化等最核心的概念与技术。
  • 第二部分:现代深度学习技术——涵盖计算组件、卷积神经网络(CNN)、循环神经网络(RNN)、注意力机制与 Transformer 等当前实践中最通用的工具。
  • 第三部分:可扩展性、效率与应用——包括优化算法、计算性能、计算机视觉应用、NLP 预训练与应用、强化学习、高斯过程、超参数优化、GAN、推荐系统等(在线版提供)。

教学法上,全书坚持"即时教学"(just in time):只在某个概念真正需要被用来完成某个实际目标时才引入它,让读者尽快体会到训练出第一个模型的成就感。同时遵循"一个可工作的示例,一个 Notebook"的原则,方便读者直接复制 Notebook 作为自己研究项目的起点。对于关键组件,书里常给出两个版本:一个只依赖 NumPy 式功能与自动微分、从零手写实现,另一个使用框架高层 API 的精简实现——这正是 前言 中#@save标记机制的由来:被#@save标记的代码块(函数、类、导入语句集合)会被沉淀进d2l包,供后续章节复用。

使用与推广情况

README.md 在 "Universities Using D2L" 一节以世界地图展示了本书被全球高校采用的情况。根据仓库元数据,该书已被 70 多个国家的 500 多所大学采用,其中包括斯坦福、MIT、哈佛、剑桥等;同时它也是加州大学伯克利分校 STAT 157 课程的教学材料。地图示意图位于 static/frontpage/_images/map.png:

此外,README.md 还提供了本书的 BibTeX 引用条目,供论文与教材引用使用:

@book{zhang2023dive, title={Dive into Deep Learning}, author={Zhang, Aston and Lipton, Zachary C. and Li, Mu and Smola, Alexander J.}, publisher={Cambridge University Press}, note={\url{https://D2L.ai}}, year={2023} }

参与贡献:从修一个错别字到提交大改动

README.md 指出,这本书受益于社区在教学建议、错别字修正与各类改进上的贡献。完整的贡献流程记录在 贡献指南 中,分为两档:

  • 次要修改(改一句话、修错别字):直接在 GitHub 仓库中定位源 Markdown 文件,点击 "Edit this file" 在线编辑,填写修改说明后提交 pull request 即可。
  • 重大改动:先 Fork 仓库,用 Jupyter Notebook 打开对应 Markdown 文件(以便运行与测试改动),本地修改并git add/git commit/git push后,向主仓库发起 pull request。提交前务必清空所有输出,因为 CI 系统会重新执行被修改的章节以生成输出。

值得注意的是,一些章节同时支持多种框架实现:新增代码块时需在起始行用%%tab标记所属框架,例如%%tab pytorch表示 PyTorch 代码块、%%tab tensorflow表示 TensorFlow 代码块、%%tab all表示所有框架共享的代码块——这与前文所述的多框架机制直接呼应。实践上建议尽量提交小而聚焦的 pull request,避免超大改动难以评审。

许可证与版权

README.md 末尾明确了双许可证结构:

  • 书籍正文采用知识共享CC-BY-SA-4.0(Creative Commons Attribution-ShareAlike 4.0 International),见 LICENSE;
  • 书中的示例代码与参考代码采用修改版MIT 许可证(MIT-0),见 LICENSE-SAMPLECODE。

这一拆分意味着:正文内容可以自由共享与演绎(需署名且以相同方式共享),而代码部分的使用约束更宽松。仓库同时提供 CODE_OF_CONDUCT.md 作为社区行为准则,以及中文版(d2l-zh)与讨论/问题反馈论坛。构建配置 config.ini 中的copyright = 2023, All authors. Licensed under CC-BY-SA-4.0 and MIT-0.也印证了这一双重许可安排。

总结

  • D2L是一个以"动手实践"为核心的交互式开源深度学习教材,将概念、上下文与可运行代码统一在 Jupyter Notebook 中,并以 PyTorch、MXNet、TensorFlow、JAX 四种框架提供同一套内容。
  • 仓库结构上,Markdown 源文件即 Notebook 源文件(见 index.md 与 config.ini 的[build]段),构建期自动求值并输出多框架 Tab 版本。
  • 上手路径:安装 Miniconda →conda create --name d2l python=3.9 -y→ 安装所选框架与pip install d2l==1.0.3→ 下载 Notebook 压缩包 →jupyter notebook逐节运行(详见 安装指南)。
  • 配套工具:轻量的d2l包(依赖见 setup.py,版本见 d2l/init.py)封装了全书复用的函数与类,多后端导入方式使其与框架解耦。
  • 社区共建:任何人都可以通过 GitHub 在线编辑或 Fork + PR 的方式贡献内容(流程见 贡献指南),贡献被合并后即成为该书贡献者。
  • 许可:正文 CC-BY-SA-4.0、代码 MIT-0,配套中文本与讨论论坛。

对于希望系统入门或重温深度学习、且需要可复现、可运行代码的开发者而言,D2L 提供了一条从数学原理到工程实现的完整学习路径——这也是它被全球多所高校与学习者广泛采用的根本原因。

  • 文档
  • 教程
  • 人工智能
  • 深度学习
  • NLP
  • 计算机视觉
  • 强化学习

【免费下载链接】d2l-en

Interactive deep learning book with multi-framework code, math, and discussions. Adopted at 500 universities from 70 countries including Stanford, MIT, Harvard, and Cambridge.

项目地址:https://gitcode.com/gh_mirrors/d2/d2l-en
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 8:47:52

2026测试人自救指南:把AI变成你的第二个测试搭子

不是让AI替你干活,是让你多一个24小时在线的搭档大家好,我是某互联网公司的测试架构师。上个月,团队里一个做了5年功能测试的同事找我聊天。他说了一句话让我印象很深:“我现在每天打开Jira,看到那些待测需求&#xff…

作者头像 李华
网站建设 2026/10/1 8:47:35

GPTs 泄露提示词仓库全解析:结构、来源与提示词工程实战参考

提示工程 【免费下载链接】GPTs leaked prompts of GPTs 项目地址: https://gitcode.com/GitHub_Trending/gp/GPTs 点击查看 免费下载 本篇技术指南围绕 GitHub 推荐项目精选 / gp / GPTs 仓库展开,系统梳理其核心文档 README.md 所定义的仓库定位、目录…

作者头像 李华