Skip to content

Commit

Permalink
Merge pull request #1123 from d2l-ai/master
Browse files Browse the repository at this point in the history
Sync d2l-en v0.17.5
  • Loading branch information
astonzhang authored Apr 29, 2022
2 parents 28e1114 + 842bcdb commit 450277f
Show file tree
Hide file tree
Showing 13 changed files with 56 additions and 25 deletions.
6 changes: 3 additions & 3 deletions chapter_installation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ pip install mxnet==1.7.0.post1
你可以按如下方式安装PyTorch的CPU或GPU版本:

```bash
pip install torch==1.10.2
pip install torchvision==0.11.3
pip install torch==1.11.0
pip install torchvision==0.12.0
```


Expand All @@ -109,7 +109,7 @@ pip install tensorflow-probability==0.16.0
我们的下一步是安装`d2l`包,以方便调取本书中经常使用的函数和类:

```bash
pip install d2l==0.17.4
pip install d2l==0.17.5
```


Expand Down
15 changes: 13 additions & 2 deletions chapter_linear-networks/linear-regression.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ $\eta$表示*学习率*(learning rate)。
%matplotlib inline
from d2l import mxnet as d2l
import math
import numpy as np
from mxnet import np
import time
```

Expand Down Expand Up @@ -350,7 +350,18 @@ def normal(x, mu, sigma):
我们现在(**可视化正态分布**)。

```{.python .input}
#@tab all
#@tab mxnet
# 再次使用numpy进行可视化
x = np.arange(-7, 7, 0.01)
# Mean and standard deviation pairs
params = [(0, 1), (0, 2), (3, 1)]
d2l.plot(x.asnumpy(), [normal(x, mu, sigma).asnumpy() for mu, sigma in params], xlabel='x',
ylabel='p(x)', figsize=(4.5, 2.5),
legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])
```

```{.python .input}
#@tab pytorch, tensorflow
# 再次使用numpy进行可视化
x = np.arange(-7, 7, 0.01)
Expand Down
3 changes: 1 addition & 2 deletions chapter_multilayer-perceptrons/kaggle-house-price.md
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,6 @@ def train(net, train_features, train_labels, test_features, test_labels,
具体地说,它选择第$i$个切片作为验证数据,其余部分作为训练数据。
注意,这并不是处理数据的最有效方法,如果我们的数据集大得多,会有其他解决办法。


```{.python .input}
#@tab all
def get_k_fold_data(k, i, X, y):
Expand Down Expand Up @@ -514,7 +513,7 @@ print(f'{k}-折验证: 平均训练log rmse: {float(train_l):f}, '

```{.python .input}
#@tab all
def train_and_pred(train_features, test_feature, train_labels, test_data,
def train_and_pred(train_features, test_features, train_labels, test_data,
num_epochs, lr, weight_decay, batch_size):
net = get_net()
train_ls, _ = train(net, train_features, train_labels, None, None,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def load_pretrained_model(pretrained_model, num_hiddens, ffn_num_hiddens,
return bert, vocab
```

为了便于在大多数机器上演示,我们将在本节中加载和微调经过预训练BERT的小版本(“bert.mall”)。在练习中,我们将展示如何微调大得多的“bert.base”以显著提高测试精度。
为了便于在大多数机器上演示,我们将在本节中加载和微调经过预训练BERT的小版本(“bert.small”)。在练习中,我们将展示如何微调大得多的“bert.base”以显著提高测试精度。

```{.python .input}
#@tab all
Expand Down Expand Up @@ -310,7 +310,7 @@ d2l.train_ch13(net, train_iter, test_iter, loss, trainer, num_epochs,

## 练习

1. 如果您的计算资源允许,请微调一个更大的预训练BERT模型,该模型与原始的BERT基础模型一样大。修改`load_pretrained_model`函数中的参数设置:将“bert.mall”替换为“bert.base”,将`num_hiddens=256``ffn_num_hiddens=512``num_heads=4``num_layers=2`的值分别增加到768、3072、12和12。通过增加微调迭代轮数(可能还会调优其他超参数),你可以获得高于0.86的测试精度吗?
1. 如果您的计算资源允许,请微调一个更大的预训练BERT模型,该模型与原始的BERT基础模型一样大。修改`load_pretrained_model`函数中的参数设置:将“bert.small”替换为“bert.base”,将`num_hiddens=256``ffn_num_hiddens=512``num_heads=4``num_layers=2`的值分别增加到768、3072、12和12。通过增加微调迭代轮数(可能还会调优其他超参数),你可以获得高于0.86的测试精度吗?
1. 如何根据一对序列的长度比值截断它们?将此对截断方法与`SNLIBERTDataset`类中使用的方法进行比较。它们的利弊是什么?

:begin_tab:`mxnet`
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 情感分析:使用递归神经网络
# 情感分析:使用循环神经网络
:label:`sec_sentiment_rnn`

与词相似度和类比任务一样,我们也可以将预先训练的词向量应用于情感分析。由于 :numref:`sec_sentiment`中的IMDb评论数据集不是很大,使用在大规模语料库上预训练的文本表示可以减少模型的过拟合。作为 :numref:`fig_nlp-map-sa-rnn`中所示的具体示例,我们将使用预训练的GloVe模型来表示每个词元,并将这些词元表示送入多层双向循环神经网络以获得文本序列表示,该文本序列表示将被转换为情感分析输出 :cite:`Maas.Daly.Pham.ea.2011`。对于相同的下游应用,我们稍后将考虑不同的架构选择。
Expand Down
19 changes: 18 additions & 1 deletion chapter_optimization/optimization-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,24 @@ annotate('saddle point', (0, -0.2), (-0.52, -5.0))
如下例所示,较高维度的鞍点甚至更加隐蔽。考虑这个函数$f(x, y) = x^2 - y^2$。它的鞍点为$(0, 0)$。这是关于$y$的最大值,也是关于$x$的最小值。此外,它*看起来*像马鞍,这就是这个数学属性的名字由来。

```{.python .input}
#@tab all
#@tab mxnet
x, y = d2l.meshgrid(
d2l.linspace(-1.0, 1.0, 101), d2l.linspace(-1.0, 1.0, 101))
z = x**2 - y**2
ax = d2l.plt.figure().add_subplot(111, projection='3d')
ax.plot_wireframe(x.asnumpy(), y.asnumpy(), z.asnumpy(),
**{'rstride': 10, 'cstride': 10})
ax.plot([0], [0], [0], 'rx')
ticks = [-1, 0, 1]
d2l.plt.xticks(ticks)
d2l.plt.yticks(ticks)
ax.set_zticks(ticks)
d2l.plt.xlabel('x')
d2l.plt.ylabel('y');
```

```{.python .input}
#@tab pytorch, tensorflow
x, y = d2l.meshgrid(
d2l.linspace(-1.0, 1.0, 101), d2l.linspace(-1.0, 1.0, 101))
z = x**2 - y**2
Expand Down
5 changes: 3 additions & 2 deletions chapter_preface/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@

许多教科书教授一系列的主题,每一个都非常详细。例如,Chris Bishop的优秀教科书 :cite:`Bishop.2006` ,对每个主题都教得很透彻,以至于要读到线性回归这一章需要大量的工作。虽然专家们喜欢这本书正是因为它的透彻性,但对于初学者来说,这一特性限制了它作为介绍性文本的实用性。

在这本书中,我们将适时教授大部分概念。换句话说,你将在实现某些实际目的所需的非常时刻学习概念。虽然我们在开始时花了一些时间来教授基础基础知识,如线性代数和概率,但我们希望你在担心更深奥的概率分布之前,先体会一下训练第一个模型的满足感
在这本书中,我们将适时教授大部分概念。换句话说,你将在实现某些实际目的所需的非常时刻学习概念。虽然我们在开始时花了一些时间来教授基础的背景知识,如线性代数和概率,但我们希望你在思考更深奥的概率分布之前,先体会一下训练模型的满足感

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

我们将根据需要将可运行代码与背景材料交错。通常,在充分解释工具之前,我们常常会在提供工具这一方面犯错误(我们将在稍后解释背景)。例如,在充分解释*随机梯度下降*为什么有用或为什么有效之前,我们可以使用它。这有助于给从业者提供快速解决问题所需的弹药,同时需要读者相信我们的一些决定。

Expand Down Expand Up @@ -63,6 +63,7 @@ from collections import defaultdict
from IPython import display
import math
from matplotlib import pyplot as plt
from matplotlib_inline import backend_inline
import os
import pandas as pd
import random
Expand Down
8 changes: 4 additions & 4 deletions chapter_preliminaries/calculus.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
```{.python .input}
%matplotlib inline
from d2l import mxnet as d2l
from IPython import display
from matplotlib_inline import backend_inline
from mxnet import np, npx
npx.set_np()
Expand All @@ -65,7 +65,7 @@ def f(x):
#@tab pytorch
%matplotlib inline
from d2l import torch as d2l
from IPython import display
from matplotlib_inline import backend_inline
import numpy as np
def f(x):
Expand All @@ -76,7 +76,7 @@ def f(x):
#@tab tensorflow
%matplotlib inline
from d2l import tensorflow as d2l
from IPython import display
from matplotlib_inline import backend_inline
import numpy as np
def f(x):
Expand Down Expand Up @@ -145,7 +145,7 @@ $$\frac{d}{dx} \left[\frac{f(x)}{g(x)}\right] = \frac{g(x) \frac{d}{dx} [f(x)] -
#@tab all
def use_svg_display(): #@save
"""使用svg格式在Jupyter中显示绘图"""
display.set_matplotlib_formats('svg')
backend_inline.set_matplotlib_formats('svg')
```

我们定义`set_figsize`函数来设置图表大小。
Expand Down
3 changes: 2 additions & 1 deletion d2l/mxnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import requests
from IPython import display
from matplotlib import pyplot as plt
from matplotlib_inline import backend_inline

d2l = sys.modules[__name__]

Expand All @@ -29,7 +30,7 @@ def use_svg_display():
"""使用svg格式在Jupyter中显示绘图
Defined in :numref:`sec_calculus`"""
display.set_matplotlib_formats('svg')
backend_inline.set_matplotlib_formats('svg')

def set_figsize(figsize=(3.5, 2.5)):
"""设置matplotlib的图表大小
Expand Down
3 changes: 2 additions & 1 deletion d2l/tensorflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import requests
from IPython import display
from matplotlib import pyplot as plt
from matplotlib_inline import backend_inline

d2l = sys.modules[__name__]

Expand All @@ -29,7 +30,7 @@ def use_svg_display():
"""使用svg格式在Jupyter中显示绘图
Defined in :numref:`sec_calculus`"""
display.set_matplotlib_formats('svg')
backend_inline.set_matplotlib_formats('svg')

def set_figsize(figsize=(3.5, 2.5)):
"""设置matplotlib的图表大小
Expand Down
3 changes: 2 additions & 1 deletion d2l/torch.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import requests
from IPython import display
from matplotlib import pyplot as plt
from matplotlib_inline import backend_inline

d2l = sys.modules[__name__]

Expand All @@ -35,7 +36,7 @@ def use_svg_display():
"""使用svg格式在Jupyter中显示绘图
Defined in :numref:`sec_calculus`"""
display.set_matplotlib_formats('svg')
backend_inline.set_matplotlib_formats('svg')

def set_figsize(figsize=(3.5, 2.5)):
"""设置matplotlib的图表大小
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

requirements = [
'jupyter==1.0.0',
'numpy==1.22.2',
'matplotlib==3.4',
'numpy==1.21.5',
'matplotlib==3.5.1',
'requests==2.25.1',
'pandas==1.2.4'
]
Expand Down
6 changes: 3 additions & 3 deletions static/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ dependencies:
- python=3.8
- pip
- pip:
- d2l==0.17.4
- d2l==0.17.5
- git+https://github.com/d2l-ai/d2l-book
- mxnet-cu102==1.7.0
- torch==1.10.2+cu102
- torch==1.11.0+cu102
- -f https://download.pytorch.org/whl/torch_stable.html
- torchvision==0.11.3+cu102
- torchvision==0.12.0+cu102
- -f https://download.pytorch.org/whl/torch_stable.html
- tensorflow==2.8.0
- tensorflow-probability==0.16.0

0 comments on commit 450277f

Please sign in to comment.