Skip to content

Commit

Permalink
fix wrong tag
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaotinghe authored and astonzhang committed Feb 17, 2021
1 parent cbd8baa commit 10b71cd
Show file tree
Hide file tree
Showing 58 changed files with 3,062 additions and 3,241 deletions.
12 changes: 6 additions & 6 deletions chapter_convolutional-modern/batch-norm.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
为什么需要批量归一化层呢?让我们来回顾一下训练神经网络时出现的一些实际挑战。

首先,数据预处理的方式通常会对最终结果产生巨大影响。
回想一下我们应用多层感知机来预测房价的例子(:numref:`sec_kaggle_house`)。
回想一下我们应用多层感知机来预测房价的例子( :numref:`sec_kaggle_house` )。
使用真实数据时,我们的第一步是标准化输入特征,使其平均值为0,方差为1。
直观地说,这种标准化可以很好地与我们的优化器配合使用,因为它可以将参数的量级进行统一。

Expand Down Expand Up @@ -53,7 +53,7 @@ $$\begin{aligned} \hat{\boldsymbol{\mu}}_\mathcal{B} &= \frac{1}{|\mathcal{B}|}

事实证明,这是深度学习中一个反复出现的主题。
由于理论上尚未明确表述的原因,优化中的各种噪声源通常会导致更快的训练和较少的过拟合:这种变化似乎是正则化的一种形式。
在一些初步研究中,:cite:`Teye.Azizpour.Smith.2018` 和 :cite:`Luo.Wang.Shao.ea.2018` 分别将批量归一化的性质与贝叶斯先验相关联。
在一些初步研究中, :cite:`Teye.Azizpour.Smith.2018` 和 :cite:`Luo.Wang.Shao.ea.2018` 分别将批量归一化的性质与贝叶斯先验相关联。
这些理论揭示了为什么批量归一化最适应 $50 \sim 100$ 范围中的中等小批量尺寸的难题。

另外,批量归一化图层在”训练模式“(通过小批量统计数据归一化)和“预测模式”(通过数据集统计归一化)中的功能不同。
Expand Down Expand Up @@ -302,7 +302,7 @@ class BatchNorm(tf.keras.layers.Layer):

## 使用批量归一化层的 LeNet

为了更好理解如何应用 `BatchNorm`,下面我们将其应用于 Lenet 模型 (:numref:`sec_lenet`)
为了更好理解如何应用 `BatchNorm`,下面我们将其应用于 LeNet 模型:numref:`sec_lenet`
回想一下,批量归一化是在卷积层或全连接层之后、相应的激活函数之前应用的。

```{.python .input}
Expand Down Expand Up @@ -363,7 +363,7 @@ def net():
```

和以前一样,我们将在 Fashion-MNIST 数据集训练我们的网络。
这个代码与我们第一次训练 Lenet(:numref:`sec_lenet`)时几乎完全相同,主要区别在于学习率大得多。
这个代码与我们第一次训练 LeNet( :numref:`sec_lenet` )时几乎完全相同,主要区别在于学习率大得多。

```{.python .input}
#@tab mxnet, pytorch
Expand Down Expand Up @@ -467,7 +467,7 @@ d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr)

直观地说,批量归一化被认为可以使优化更加平滑。
然而,我们必须小心区分投机直觉和对我们观察到的现象的真实解释。
回想一下,我们甚至不知道为什么简单的神经网络(MLP 和传统的 CNN)为什么如此有效。
回想一下,我们甚至不知道为什么简单的神经网络(多层感知机和传统的卷积神经网络)为什么如此有效。
即使在 dropout 和权重衰减的情况下,它们仍然非常灵活,因此无法通过传统的学习理论泛化保证来解释它们是否能够概括到看不见的数据。

在提出批量归一化的论文中,作者除了介绍了其应用,还解释了其原理:通过减少 *内部协变量偏移*(internal covariate shift)。
Expand All @@ -481,7 +481,7 @@ ii)这种解释只提供了一种不明确的直觉,但留下了一个有待

随着批量归一化的普及,“内部协变量偏移”的解释反复出现在技术文献的辩论,特别是关于“如何展示机器学习研究”的更广泛的讨论中。
Ali Rahimi 在接受 2017 年 NeurIPS 大会的“接受时间考验奖”(Test of Time Award)时发表了一篇令人难忘的演讲。他将“内部协变量转移”作为焦点,将现代深度学习的实践比作炼金术。
他对该示例进行了详细回顾 :cite:`Lipton.Steinhardt.2018`,概述了机器学习中令人不安的趋势。
他对该示例进行了详细回顾 :cite:`Lipton.Steinhardt.2018` ,概述了机器学习中令人不安的趋势。
此外,一些作者对批量归一化的成功提出了另一种解释:在某些方面,批量归一化的表现出与原始论文 :cite:`Santurkar.Tsipras.Ilyas.ea.2018` 中声称的行为是相反的。

然而,与技术机器学习文献中成千上万类似模糊的声明相比,内部协变量偏移没有什么更值得批评。
Expand Down
4 changes: 2 additions & 2 deletions chapter_convolutional-modern/densenet.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ $$\mathbf{x} \to \left[
f_1(\mathbf{x}),
f_2([\mathbf{x}, f_1(\mathbf{x})]), f_3([\mathbf{x}, f_1(\mathbf{x}), f_2([\mathbf{x}, f_1(\mathbf{x})])]), \ldots\right].$$

最后,将这些展开式结合到 MLP 中,再次减少特征的数量。
最后,将这些展开式结合到多层感知机中,再次减少特征的数量。
实现起来非常简单:我们不需要添加术语,而是将它们连接起来。
DenseNet 这个名字由变量之间的“稠密连接”而得来,最后一层与之前的所有层紧密相连。
稠密连接如 :numref:`fig_densenet` 所示。
Expand Down Expand Up @@ -381,7 +381,7 @@ d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr)
1. 真的是这样吗?可以把输入形状换成 $224 \times 224$ ,来看看实际的显存消耗。
1. 你能想出另一种方法来减少显存消耗吗?你需要如何改变框架?
1. 实现 DenseNet 论文 :cite:`Huang.Liu.Van-Der-Maaten.ea.2017` 表 1 所示的不同 DenseNet 版本。
1. 应用DenseNet的思想设计一个基于多层感知机的模型。将其应用于:numref:`sec_kaggle_house`中的房价预测任务。
1. 应用DenseNet的思想设计一个基于多层感知机的模型。将其应用于 :numref:`sec_kaggle_house` 中的房价预测任务。


:begin_tab:`mxnet`
Expand Down
2 changes: 1 addition & 1 deletion chapter_convolutional-modern/googlenet.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr)
* 添加批量归一化层 :cite:`Ioffe.Szegedy.2015`(batch normalization),在 :numref:`sec_batch_norm`中将介绍)。
* 对 Inception 模块进行调整。
* 使用标签平滑(label smoothing)进行模型正则化 :cite:`Szegedy.Vanhoucke.Ioffe.ea.2016`
* 加入残差连接 :cite:`Szegedy.Ioffe.Vanhoucke.ea.2017` ,(:numref:`sec_resnet`一节将介绍)。
* 加入残差连接 :cite:`Szegedy.Ioffe.Vanhoucke.ea.2017` ,( :numref:`sec_resnet` 将介绍)。
1. 使用 GoogLeNet 的最小图像大小是多少?
1. 将 AlexNet、VGG 和 NiN 的模型参数大小与 GoogLeNet 进行比较。后两个网络结构是如何显著减少模型参数大小的?

Expand Down
6 changes: 3 additions & 3 deletions chapter_convolutional-neural-networks/lenet.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# 卷积神经网络之LeNet
# 卷积神经网络(LeNet)
:label:`sec_lenet`


通过之前几节,我们学习了构建一个完整卷积神经网络的所需组件。
回想一下,之前我们将 softmax 回归模型(:numref:`sec_softmax_scratch`)和全连接层模型(:numref:`sec_mlp_scratch`)应用于 Fashion-MNIST 数据集中的服装图片上。
回想一下,之前我们将 softmax 回归模型( :numref:`sec_softmax_scratch` )和多层感知机模型( :numref:`sec_mlp_scratch` )应用于 Fashion-MNIST 数据集中的服装图片上。
为了能够应用 softmax 回归和多层感知机,我们首先将每个大小为 $28\times28$ 的图像展平为一个 784 固定长度的一维向量,然后用全连接层对其进行处理。
而现在,我们已经掌握了卷积层的处理方法,我们可以在图像中保留空间结构。
同时,用卷积层代替全连接层的另一个好处是:更简洁的模型所需的参数更少。
Expand Down Expand Up @@ -95,7 +95,7 @@ def net():

我们对原始模型做了一点小改动,去掉了最后一层的高斯激活。除此之外,这个网络与最初的 LeNet-5 一致。

下面,我们将一个大小为 $28 \times 28$ 的单通道(黑白)图像通过 Lenet。 通过在每一层打印输出的形状,我们可以检查模型,以确保其操作与我们期望的 :numref:`img_lenet_vert` 一致。
下面,我们将一个大小为 $28 \times 28$ 的单通道(黑白)图像通过 LeNet。 通过在每一层打印输出的形状,我们可以检查模型,以确保其操作与我们期望的 :numref:`img_lenet_vert` 一致。

![LeNet 的简化版。](../img/lenet-vert.svg)
:label:`img_lenet_vert`
Expand Down
2 changes: 1 addition & 1 deletion chapter_deep-learning-computation/deferred-init.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

## 实例化网络

首先,让我们实例化一个MLP
首先,让我们实例化一个多层感知机

```{.python .input}
from mxnet import init, np, npx
Expand Down
2 changes: 1 addition & 1 deletion chapter_deep-learning-computation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

除了庞大的数据集和强大的硬件,优秀的软件工具在深度学习的快速发展中发挥了不可或缺的作用。从2007年发布的开创性的Theano库开始,灵活的开源工具使研究人员能够快速开发模型原型,避免了使用标准组件时的重复工作,同时仍然保持了进行底层修改的能力。随着时间的推移,深度学习库已经演变成提供越来越粗糙的抽象。就像半导体设计师从指定晶体管到逻辑电路再到编写代码一样,神经网络研究人员已经从考虑单个人工神经元的行为转变为从层的角度构思网络,现在通常在设计结构时考虑的是更粗糙的块(block)。

到目前为止,我们已经介绍了一些基本的机器学习概念,并慢慢介绍了功能齐全的深度学习模型。在上一章中,我们从零开始实现了MLP的每个组件,然后展示了如何利用高级API轻松地实现相同的模型。为了易于学习,我们调用了深度学习库,但是跳过了它们工作的细节。在本章中,我们开始深入探索深度学习计算的关键组件,即模型构建、参数访问与初始化、设计自定义层和块、将模型读写到磁盘,以及利用GPU实现显著的加速。这些知识将使你从*基础用户*变为*高级用户*。虽然本章不介绍任何新的模型或数据集,但后面的高级模型章节在很大程度上依赖于本章的知识。
到目前为止,我们已经介绍了一些基本的机器学习概念,并慢慢介绍了功能齐全的深度学习模型。在上一章中,我们从零开始实现了多层感知机的每个组件,然后展示了如何利用高级API轻松地实现相同的模型。为了易于学习,我们调用了深度学习库,但是跳过了它们工作的细节。在本章中,我们开始深入探索深度学习计算的关键组件,即模型构建、参数访问与初始化、设计自定义层和块、将模型读写到磁盘,以及利用GPU实现显著的加速。这些知识将使你从*基础用户*变为*高级用户*。虽然本章不介绍任何新的模型或数据集,但后面的高级模型章节在很大程度上依赖于本章的知识。

```toc
:maxdepth: 2
Expand Down
Loading

0 comments on commit 10b71cd

Please sign in to comment.