搞定《动手学深度学习》-(李牧)PyTorch版本的所有内容

Posted M_Q_T

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搞定《动手学深度学习》-(李牧)PyTorch版本的所有内容相关的知识,希望对你有一定的参考价值。

目录

目录

简介

阅读指南

1. 深度学习简介

2. 预备知识

3. 深度学习基础

4. 深度学习计算

5. 卷积神经网络

6. 循环神经网络

7. 优化算法

8. 计算性能

9. 计算机视觉

10. 自然语言处理

环境

参考(大家可以在这里下载代码)

原书地址(大家可以在这里阅读电子版PDF内容)

引用

阅读指南


目录

简介

阅读指南

1. 深度学习简介


2. 预备知识


2.1 环境配置
2.2 数据操作
2.3 自动求梯度


3. 深度学习基础


3.1 线性回归
3.2 线性回归的从零开始实现
3.3 线性回归的简洁实现
3.4 softmax回归
3.5 图像分类数据集(Fashion-MNIST)
3.6 softmax回归的从零开始实现
3.7 softmax回归的简洁实现
3.8 多层感知机
3.9 多层感知机的从零开始实现
3.10 多层感知机的简洁实现
3.11 模型选择、欠拟合和过拟合
3.12 权重衰减
3.13 丢弃法
3.14 正向传播、反向传播和计算图
3.15 数值稳定性和模型初始化
3.16 实战Kaggle比赛:房价预测


4. 深度学习计算


4.1 模型构造
4.2 模型参数的访问、初始化和共享
4.3 模型参数的延后初始化
4.4 自定义层
4.5 读取和存储
4.6 GPU计算


5. 卷积神经网络


5.1 二维卷积层
5.2 填充和步幅
5.3 多输入通道和多输出通道
5.4 池化层
5.5 卷积神经网络(LeNet)
5.6 深度卷积神经网络(AlexNet)
5.7 使用重复元素的网络(VGG)
5.8 网络中的网络(NiN)
5.9 含并行连结的网络(GoogLeNet)
5.10 批量归一化
5.11 残差网络(ResNet)
5.12 稠密连接网络(DenseNet)


6. 循环神经网络


6.1 语言模型
6.2 循环神经网络
6.3 语言模型数据集(周杰伦专辑歌词)
6.4 循环神经网络的从零开始实现
6.5 循环神经网络的简洁实现
6.6 通过时间反向传播
6.7 门控循环单元(GRU)
6.8 长短期记忆(LSTM)
6.9 深度循环神经网络
6.10 双向循环神经网络


7. 优化算法


7.1 优化与深度学习
7.2 梯度下降和随机梯度下降
7.3 小批量随机梯度下降
7.4 动量法
7.5 AdaGrad算法
7.6 RMSProp算法
7.7 AdaDelta算法
7.8 Adam算法


8. 计算性能


8.1 命令式和符号式混合编程
8.2 异步计算
8.3 自动并行计算
8.4 多GPU计算


9. 计算机视觉


9.1 图像增广
9.2 微调
9.3 目标检测和边界框
9.4 锚框
9.5 多尺度目标检测
9.6 目标检测数据集(皮卡丘)
 9.7 单发多框检测(SSD)
9.8 区域卷积神经网络(R-CNN)系列
9.9 语义分割和数据集
 9.10 全卷积网络(FCN)
9.11 样式迁移
 9.12 实战Kaggle比赛:图像分类(CIFAR-10)
 9.13 实战Kaggle比赛:狗的品种识别(ImageNet Dogs)


10. 自然语言处理


10.1 词嵌入(word2vec)
10.2 近似训练
10.3 word2vec的实现
10.4 子词嵌入(fastText)
10.5 全局向量的词嵌入(GloVe)
10.6 求近义词和类比词
10.7 文本情感分类:使用循环神经网络
10.8 文本情感分类:使用卷积神经网络(textCNN)
10.9 编码器—解码器(seq2seq)
10.10 束搜索
10.11 注意力机制
10.12 机器翻译

环境


matplotlib==3.3.2
torch==1.1.0
torchvision==0.3.0
torchtext==0.4.0
CUDA Version==11.0

参考(大家可以在这里下载代码)

本书PyTorch实现:Dive-into-DL-PyTorch
本书TendorFlow2.0实现:Dive-into-DL-TensorFlow2.0

原书地址(大家可以在这里阅读电子版PDF内容)

中文版:动手学深度学习 | Github仓库
English Version: Dive into Deep Learning | Github Repo

引用

如果您在研究中使用了这个项目请引用原书:

@bookzhang2019dive,
    title=Dive into Deep Learning,
    author=Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola,
    note=\\urlhttp://www.d2l.ai,
    year=2020

阅读指南

和原书一样,docs内容大体可以分为3个部分:

第一部分(第1章至第3章)涵盖预备工作和基础知识。第1章介绍深度学习的背景。第2章提供动手学深度学习所需要的预备知识。第3章包括深度学习最基础的概念和技术,如多层感知机和模型正则化。如果读者时间有限,并且只想了解深度学习最基础的概念和技术,那么只需阅读第一部分。
第二部分(第4章至第6章)关注现代深度学习技术。第4章描述深度学习计算的各个重要组成部分,并为实现后续更复杂的模型打下基础。第5章解释近年来令深度学习在计算机视觉领域大获成功的卷积神经网络。第6章阐述近年来常用于处理序列数据的循环神经网络。阅读第二部分有助于掌握现代深度学习技术。
第三部分(第7章至第10章)讨论计算性能和应用。第7章评价各种用来训练深度学习模型的优化算法。第8章检验影响深度学习计算性能的几个重要因素。第9章和第10章分别列举深度学习在计算机视觉和自然语言处理中的重要应用。这部分内容读者可根据兴趣选择阅读。
下图描绘了《动手学深度学习》的结构。

上图中由甲章指向乙章的箭头表明甲章的知识有助于理解乙章的内容。

如果读者想短时间了解深度学习最基础的概念和技术,只需阅读第1章至第3章;

如果读者希望掌握现代深度学习技术,还需阅读第4章至第6章。

第7章至第10章读者可以根据兴趣选择阅读。

你期待已久的《动手学深度学习》(PyTorch版)来啦!

《动手学深度学习》全新PyTorch版本,李沐和亚马逊科学家阿斯顿·张等大咖作者强强联合之作,机器学习、深度学习领域重磅教程,交互式实战环境,配套资源丰富!

面向中文读者的能运行、可讨论的深度学习入门书。

动手学深度学习(PyTorch版)

阿斯顿·张(Aston Zhang) 著,何孝霆(Xiaoting He) 瑞潮儿·胡(Rachel Hu) 译

本书是《动手学深度学习》的重磅升级版本,选用经典的PyTorch深度学习框架,旨在向读者交付更为便捷的有关深度学习的交互式学习体验。

本书重新修订《动手学深度学习》的所有内容,并针对技术的发展,新增注意力机制、预训练等内容。本书包含15章,第一部分介绍深度学习的基础知识和预备知识,并由线性模型引出最简单的神经网络——多层感知机;第二部分阐述深度学习计算的关键组件、卷积神经网络、循环神经网络、注意力机制等大多数现代深度学习应用背后的基本工具;第三部分讨论深度学习中常用的优化算法和影响深度学习计算性能的重要因素,并分别列举深度学习在计算机视觉和自然语言处理中的重要应用。

本书同时覆盖深度学习的方法和实践,主要面向在校大学生、技术人员和研究人员。阅读本书需要读者了解基本的Python编程知识及预备知识中描述的线性代数、微分和概率等基础知识。

这是一本及时且引人入胜的书。它不仅提供了对深度学习原理的全面概述,还提供了具有 编程代码的详细算法,此外,还提供了计算机视觉和自然语言处理中有关深度学习的最新介 绍。如果你想钻研深度学习,请研读这本书!
——韩家炜 ACM 院士 、IEEE 院士 美国伊利诺伊大学香槟分校计算机系Michael Aiken Chair 教授

这是对机器学习文献的一个很受欢迎的补充,重点是通过集成 Jupyter 记事本实现的动手 经验。深度学习的学生应该能体会到,这对于熟练掌握这一技术是非常宝贵的。
——Bernhard Scholkopf ACM 院士 、德国国家科学院院士 德国马克斯 • 普朗克研究所智能系统院院长

这本书基于深度学习框架来介绍深度学习技术,书中代码可谓“所学即所用”,为喜欢通 过 Python 代码进行学习的读者接触、了解深度学习技术提供了很大的便利。
——周志华 ACM 院士 、IEEE 院士 、AAAS 院士 南京大学计算机科学与技术系主任

这是一本基于深度学习框架的深度学习实战图书,可以帮助读者快速上手并掌握使用深度 学习工具的基本技能。本书的几个作者都在机器学习领域有着非常丰富的经验。他们不光有大 量的工业界实践经验,也有非常高的学术成就,所以对机器学习领域的前沿算法理解深刻。这 使得作者们在提供优质代码的同时,也可以把最前沿的算法和概念深入浅出地介绍给读者。本 书可以帮助深度学习实践者快速提升自己的能力。
——张潼ASA 院士 、IMS 院士 香港科技大学计算机系和数学系教授

一种结合了代码、数学和HTML的媒介

任何一种计算技术要想发挥其全部影响力, 都必须得到充分的理解, 留有充分的文档记 录,并得到成熟的、维护良好的工具的支持。关键思想应该被清楚地提炼出来,尽可能减少需 要让新的从业者跟上时代的入门时间。成熟的库应该使常见的任务自动化, 示例代码应该使从 业者可以轻松地修改、应用和扩展常见的应用程序,以满足他们的需求。以动态网页应用为 例,尽管许多公司,如亚马逊,在 20 世纪 90 年代开发了成功的数据库驱动网页应用程序,但 在过去的 10 年里,这项技术在帮助创造性企业家方面的潜力已经得到了更大程度的发挥,部 分原因是开发了功能强大、文档完整的框架。

测试深度学习的潜力带来了独特的挑战, 因为任何一个应用都会将不同的学科结合在一起。应用深度学习需要同时了解:
(1) 以特定方式提出问题的动机;
(2) 给定建模方法的数 学;
(3)将模型拟合数据的优化算法;
(4)能够有效训练模型、克服数值计算缺陷并最大限度 地利用现有硬件的工程方法。同时教授表述问题所需的批判性思维技能、解决问题所需的数学 知识,以及实现这些解决方案所需的软件工具,这是一个巨大的挑战。

在实践中学习

许多教科书介绍一系列的主题,每个主题都非常详细。例如,Christopher Bishop 的优秀教科书 Pattern Recognition and Machine Learning把每个主题都讲得很透彻,以至于读到线性回归一章需要大量的工作。尽管专家们喜欢该书正是因为它的透彻性,但对初学者来说,这一特性限制了它作为介绍性文本的实用性。

在本书中,将适时教授大部分概念。换句话说,读者将在需要实现某些实际目的非常时刻学习概念。在开始花了一些时间来教授基础的背景知识。

除了提供基本数学背景速成课程的几节初步课程,后续的每章都介绍了适量的新概念,并提供可独立工作的例子——使用真实的数据集。这带来了内容组织上的挑战,某些模型可能在逻辑上组合在单节中,而一些想法可能最好通过连续运行几个模型来传授。此外,坚持“一个工作例子一节”的策略有一个很大的好处:读者可以利用书中的代码尽可能轻松地启动自己的研究项目,即只需复制本节的内容并开始修改。

本书将从零开始教授深度学习的概念。有时,我们想深入研究模型的细节,这些细节通常 会被深度学习框架的高级抽象隐藏起来。特别是在基础教程中,我们希望读者了解在给定层或 优化器中发生的一切。在这些情况下,我们通常会提供两个版本的示例:一个是我们从零开始 实现一切,仅依赖张量操作和自动微分;另一个是更实际的示例,我们使用深度学习框架的高 级 API 编写简洁的代码。一旦我们教授了一些组件是如何工作的,就可以在随后的教程中使用高级 API 了。

内容和结构

全书大致可分为 3 个部分,在图1中用不同的颜色呈现。

第一部分(第 1 章~第 4 章)包括基础知识和预备知识。第 1 章提供深度学习的入门 课程。第 2 章快速介绍实践深度学习所需的前提条件,例如,如何存储和处理数据, 以及如何应用基于线性代数、微积分和概率等基本概念的各种数值运算。第 3 章和第 4 章涵盖深度学习的基本概念和技术,例如,线性回归、多层感知机和正则化。

第二部分(第5章~第10章)集中讨论现代深度学习技术。第5章描述深度学习计算的各种关键组件,并为我们随后实现更复杂的模型奠定了基础。第6章和第7章介绍卷积神经网络(convolutional neural network ,CNN),这是构成大多数现代计 算机视觉系统骨干的强大工具。第 8 章和第 9 章引入循环神经网络(recurrent neural network ,RNN),这是一种利用数据中的时间或序列结构的模型,通常用于自然语言 处理和时间序列预测。第 10 章介绍一类新的模型,它采用了一种称为注意力机制的 技术,最近它们已经开始在自然语言处理中取代循环神经网络。这一部分将帮助读 者快速了解大多数现代深度学习应用背后的基本工具。

第三部分(第 11 章~第 15 章)讨论可伸缩性、效率和应用程序。第 11 章讨论用于训练深度学习模型的几种常用优化算法。第 12 章探讨影响深度学习代码计算性能的 几个关键因素。第 13 章展示深度学习在计算机视觉中的主要应用。第 14 章和第 15 章展示如何预训练语言表示模型并将其应用于自然语言处理任务。

目标受众

本书面向学生(本科生或研究生)、工程师和研究人员,他们希望扎实掌握深度学习的实用技术。因为我们从零开始解释每个概念,所以不需要读者具备深度学习或机器学习的背景。全面解释深度学习的方法需要一些数学知识和编程技巧,但我们假设读者只了解一些基础知识,包括线性代数、微积分、概率和非常基础的Python编程。此外,在本书的英文在线附录中,我们复习了本书所涵盖的大多数数学知识。大多数时候,我们会优先考虑直觉和想法,而不是数学的严谨性。有许多很棒的书可以引导感兴趣的读者走得更远,例如BelaBollobas的LinearAnalysis[对线性代数和函数分析进行了深入的研究。参考文献是一本很好的统计学指南。如果读者以前没有使用过Python语言,那么可以仔细阅读Python教程。

以上是关于搞定《动手学深度学习》-(李牧)PyTorch版本的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

《动手学深度学习》环境配置(PyTorch版)

小白学习之pytorch框架-动手学深度学习(begin)

《动手学深度学习》(PyTorch版)

李沐《动手学深度学习》第二版 pytorch笔记1 环境搭建

自动求导 动手学深度学习 pytorch

PyTorch版《动手学深度学习》开源了,最美DL书遇上最赞DL框架