From c9fe927102ab835e5c63c973aa4a02ebd8df1254 Mon Sep 17 00:00:00 2001 From: swordfaith Date: Mon, 6 Jan 2020 14:05:25 +0800 Subject: [PATCH] fix issue #21, wrong relative path insertion in ch4&5 docs --- docs/chapter04_DL-computation/4.1_model-construction.md | 2 +- docs/chapter04_DL-computation/4.2_parameters.md | 2 +- docs/chapter05_CNN/5.4_pooling.md | 2 +- docs/chapter05_CNN/5.5_lenet.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/chapter04_DL-computation/4.1_model-construction.md b/docs/chapter04_DL-computation/4.1_model-construction.md index fee63f3..40a3a40 100644 --- a/docs/chapter04_DL-computation/4.1_model-construction.md +++ b/docs/chapter04_DL-computation/4.1_model-construction.md @@ -1,7 +1,7 @@ # 模型构造 -让我们回顾一下在[“多层感知机的简洁实现”](../chapter_deep-learning-basics/mlp-gluon.ipynb)一节中含单隐藏层的多层感知机的实现方法。我们首先构造`Sequential`实例,然后依次添加两个全连接层。其中第一层的输出大小为256,即隐藏层单元个数是256;第二层的输出大小为10,即输出层单元个数是10。我们在上一章的其他 +让我们回顾一下在 3.10节(“多层感知机的简洁实现”)一节中含单隐藏层的多层感知机的实现方法。我们首先构造`Sequential`实例,然后依次添加两个全连接层。其中第一层的输出大小为256,即隐藏层单元个数是256;第二层的输出大小为10,即输出层单元个数是10。我们在上一章的其他 节中也使用了`Sequential`类构造模型。这里我们介绍另外一种基于`tf.keras.Model`类的模型构造方法:它让模型构造更加灵活。 diff --git a/docs/chapter04_DL-computation/4.2_parameters.md b/docs/chapter04_DL-computation/4.2_parameters.md index ac619b2..70ec7df 100644 --- a/docs/chapter04_DL-computation/4.2_parameters.md +++ b/docs/chapter04_DL-computation/4.2_parameters.md @@ -1,7 +1,7 @@ # 模型参数的访问、初始化和共享 -在[“线性回归的简洁实现”]一节中,我们通过`init`模块来初始化模型的全部参数。我们也介绍了访问模型参数的简单方法。本节将深入讲解如何访问和初始化模型参数,以及如何在多个层之间共享同一份模型参数。 +在 3.3 节(“线性回归的简洁实现”)一节中,我们通过`init`模块来初始化模型的全部参数。我们也介绍了访问模型参数的简单方法。本节将深入讲解如何访问和初始化模型参数,以及如何在多个层之间共享同一份模型参数。 我们先定义一个与上一节中相同的含单隐藏层的多层感知机。我们依然使用默认方式初始化它的参数,并做一次前向计算。 diff --git a/docs/chapter05_CNN/5.4_pooling.md b/docs/chapter05_CNN/5.4_pooling.md index a5fd39d..6cf81f5 100644 --- a/docs/chapter05_CNN/5.4_pooling.md +++ b/docs/chapter05_CNN/5.4_pooling.md @@ -11,7 +11,7 @@ print(tf.__version__) # 池化层 -回忆一下,在[“二维卷积层”](conv-layer.ipynb)一节里介绍的图像物体边缘检测应用中,我们构造卷积核从而精确地找到了像素变化的位置。设任意二维数组`X`的`i`行`j`列的元素为`X[i, j]`。如果我们构造的卷积核输出`Y[i, j]=1`,那么说明输入中`X[i, j]`和`X[i, j+1]`数值不一样。这可能意味着物体边缘通过这两个元素之间。但实际图像里,我们感兴趣的物体不会总出现在固定位置:即使我们连续拍摄同一个物体也极有可能出现像素位置上的偏移。这会导致同一个边缘对应的输出可能出现在卷积输出`Y`中的不同位置,进而对后面的模式识别造成不便。 +回忆一下,在 5.1 节 (“二维卷积层”)一节里介绍的图像物体边缘检测应用中,我们构造卷积核从而精确地找到了像素变化的位置。设任意二维数组`X`的`i`行`j`列的元素为`X[i, j]`。如果我们构造的卷积核输出`Y[i, j]=1`,那么说明输入中`X[i, j]`和`X[i, j+1]`数值不一样。这可能意味着物体边缘通过这两个元素之间。但实际图像里,我们感兴趣的物体不会总出现在固定位置:即使我们连续拍摄同一个物体也极有可能出现像素位置上的偏移。这会导致同一个边缘对应的输出可能出现在卷积输出`Y`中的不同位置,进而对后面的模式识别造成不便。 在本节中我们介绍池化(pooling)层,它的提出是为了缓解卷积层对位置的过度敏感性。 diff --git a/docs/chapter05_CNN/5.5_lenet.md b/docs/chapter05_CNN/5.5_lenet.md index d213839..be6f241 100644 --- a/docs/chapter05_CNN/5.5_lenet.md +++ b/docs/chapter05_CNN/5.5_lenet.md @@ -10,7 +10,7 @@ print(tf.__version__) # 卷积神经网络(LeNet) -在[“多层感知机的从零开始实现”](../chapter_deep-learning-basics/mlp-scratch.ipynb)一节里我们构造了一个含单隐藏层的多层感知机模型来对Fashion-MNIST数据集中的图像进行分类。每张图像高和宽均是28像素。我们将图像中的像素逐行展开,得到长度为784的向量,并输入进全连接层中。然而,这种分类方法有一定的局限性。 +在 3.9 节(“多层感知机的从零开始实现”)一节里我们构造了一个含单隐藏层的多层感知机模型来对Fashion-MNIST数据集中的图像进行分类。每张图像高和宽均是28像素。我们将图像中的像素逐行展开,得到长度为784的向量,并输入进全连接层中。然而,这种分类方法有一定的局限性。 1. 图像在同一列邻近的像素在这个向量中可能相距较远。它们构成的模式可能难以被模型识别。 2. 对于大尺寸的输入图像,使用全连接层容易导致模型过大。假设输入是高和宽均为$1,000$像素的彩色照片(含3个通道)。即使全连接层输出个数仍是256,该层权重参数的形状也是$3,000,000\times 256$:它占用了大约3 GB的内存或显存。这会带来过于复杂的模型和过高的存储开销。