ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

D2L(Dive into Deep Learning)开源交互式深度学习教材:多框架代码、数学与社区讨论的完整指南 文档教程人工智能深度学习NLP计算机视觉强化学习【免费下载链接】d2l-enInteractive 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点击查看免费下载D2LDive 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 的形态对所有人免费开放freely available for everyone——仓库以开源协议发布见下文许可证小节提供足够的技术深度使其成为通往应用机器学习科学家之路的起点包含可运行代码展示读者在实践中如何解决实际问题支持快速更新既可由作者团队更新也可由整个社区推动配套讨论论坛用于互动讨论技术细节并解答疑问。这五个目标在实现层面常有冲突公式、定理与引用最适合用 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 即 Notebookconfig.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 [ jupyter1.0.0, numpy1.23.5, matplotlib3.7.2, matplotlib-inline0.1.6, requests2.31.0, pandas2.0.3, scipy1.10.1 ]除数值计算、绘图、数据处理等基础库外并不捆绑任何深度学习框架——框架由读者按需另行安装见下一节。同时python_requires3.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。以 macOSIntel为例# 文件名可能随版本变化 sh Miniconda3-py39_4.12.0-MacOSX-x86_64.sh -bLinux 用户下载含 Linux 字样的脚本执行sh Miniconda3-py39_4.12.0-Linux-x86_64.sh -bWindows 用户则按官方在线指引安装并可用cmd打开命令行。接着初始化 shell 并创建、激活名为d2l的环境~/miniconda3/bin/conda init conda create --name d2l python3.9 -y conda activate d2l第二步安装深度学习框架与 d2l 包安装框架前建议先确认机器是否有可用的 NVIDIA GPU笔记本上的显示 GPU 不在此列若无 GPUCPU 也足够跑完前几章。四种框架的版本要求如下PyTorchpip install torch2.0.0 torchvision0.15.1TensorFlowpip install tensorflow2.12.0 tensorflow-probability0.20.0MXNetGPU 版pip install mxnet-cu1121.9.1后缀按 CUDA 版本调整如cu101对应 CUDA 10.1CPU 版pip install mxnet1.9.1JAXGPU 版pip install jax[cuda11_pip]0.4.13 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html flax0.7.0CPU 版pip install jax[cpu]0.4.13 flax0.7.0然后安装本书配套的d2l包版本与仓库一致pip install d2l1.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 pytorchMXNet、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.0Creative 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 python3.9 -y→ 安装所选框架与pip install d2l1.0.3→ 下载 Notebook 压缩包 →jupyter notebook逐节运行详见 安装指南。配套工具轻量的d2l包依赖见 setup.py版本见 d2l/init.py封装了全书复用的函数与类多后端导入方式使其与框架解耦。社区共建任何人都可以通过 GitHub 在线编辑或 Fork PR 的方式贡献内容流程见 贡献指南贡献被合并后即成为该书贡献者。许可正文 CC-BY-SA-4.0、代码 MIT-0配套中文本与讨论论坛。对于希望系统入门或重温深度学习、且需要可复现、可运行代码的开发者而言D2L 提供了一条从数学原理到工程实现的完整学习路径——这也是它被全球多所高校与学习者广泛采用的根本原因。赞分享文档教程人工智能深度学习NLP计算机视觉强化学习【免费下载链接】d2l-enInteractive 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点击查看免费下载相关推荐《Dive into Deep Learning》项目解析深度学习入门指南《Dive into Deep Learning》项目解析深度学习入门指南 深度学习的发展历程 深度学习在短短几年内从学术界的边缘课题发展成为推动技术进步的核文档教程人工智能深度学习NLP计算机视觉强化学习革命性深度学习教程D2L.ai多框架代码数学推导交互式学习革命性深度学习教程D2L.ai多框架代码数学推导交互式学习 深度学习正在改变世界但学习过程往往充满挑战。D2L.aiDive into Deep Le文档教程人工智能深度学习NLP计算机视觉强化学习Dive into Deep Learning 数学符号体系全解d2l-en 全书统一记法指南Dive into Deep Learning 数学符号体系全解d2l en 全书统一记法指南 导读 本文系统梳理《Dive into Deep Learn文档教程人工智能深度学习NLP计算机视觉强化学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表