提交 46c36a28 编写于 作者: W wizardforcel

2021-01-07 20:18:50

上级 0fe6accf
......@@ -427,7 +427,7 @@ model.add(Dense(hidden_units,
输出激活层还有其他选择,例如`linear``sigmoid``tanh``linear`激活是一种身份功能。 它将其输入复制到其输出。 `sigmoid`功能更具体地是,称为**逻辑 Sigmoid**。 如果预测张量的元素将独立地映射在 0.0 和 1.0 之间,则将使用此方法。 与`softmax`中不同,预测张量的所有元素的总和不限于 1.0。 例如,`sigmoid`用作情感预测(从 0.0 到 1.0、0.0 不好,1.0 很好)或图像生成(0.0 映射到像素级别 0 和 1.0 映射到像素 255)的最后一层 。
`tanh`函数将其输入映射在 -1.0 到 1.0 的范围内。 如果输出可以同时以正值和负值摆幅,则这一点很重要。 `tanh`功能在循环神经网络的内部层中更普遍使用,但也已用作输出层激活。 如果在输出激活中使用 tanh 代替`sigmoid`,则必须适当缩放使用的数据。 例如,不是使用![](img/B14853_01_006.png)缩放`[0.0, 1.0]`范围内的每个灰度像素,而是使用![](img/B14853_01_007.png)将其分配在`[-1.0, 1.0]`范围内。
`tanh`函数将其输入映射在 -1.0 到 1.0 的范围内。 如果输出可以同时以正值和负值摆幅,则这一点很重要。 `tanh`功能在循环神经网络的内部层中更普遍使用,但也已用作输出层激活。 如果在输出激活中使用 tanh 代替`sigmoid`,则必须适当缩放使用的数据。 例如,不是使用`x = x / 255`缩放`[0.0, 1.0]`范围内的每个灰度像素,而是使用`x = (x - 127.5) / 127.5`将其分配在`[-1.0, 1.0]`范围内。
下图“图 1.3.6”显示了`sigmoid``tanh`功能。 数学上,乙状结肠可以用以下公式表示:
......@@ -460,9 +460,9 @@ model.add(Dense(hidden_units,
SGD 被认为是最基本的优化程序。 它是演算中梯度下降的简单版本。 在**梯度下降****GD**)中,追踪下坡函数的曲线可找到最小值,就像在山谷中下坡直至到达底部一样。
GD 算法如图 1.3.7 所示。 假设`x`是被调整以找到`y`的最小值(例如,损失函数)的参数(例如,权重)。 从`x = -0.5`的任意点开始。 梯度![](img/B14853_01_013.png)。 GD 算法强加`x`然后更新为![](img/B14853_01_014.png)`x`的新值等于旧值,再加上![](img/B14853_01_015.png)缩放的梯度的相反值。 小数字![](img/B14853_01_016.png)是指学习率。 如果`ε = 0.01`,则`x`的新值为 -0.48。 GD 是迭代执行的。 在每一步,`y`都将接近其最小值。 在`x = 0.5`时,![](img/B14853_01_018.png)。 GD 已找到`y = -1.25`的绝对最小值。 渐变建议不要进一步改变`x`
GD 算法如图 1.3.7 所示。 假设`x`是被调整以找到`y`的最小值(例如,损失函数)的参数(例如,权重)。 从`x = -0.5`的任意点开始。 梯度`dy/dx = -2.0`。 GD 算法强加`x`然后更新为`x = -0.5 - ε(-2.0)``x`的新值等于旧值,再加上`ε`缩放的梯度的相反值。 小数字`ε`是指学习率。 如果`ε = 0.01`,则`x`的新值为 -0.48。 GD 是迭代执行的。 在每一步,`y`都将接近其最小值。 在`x = 0.5`时,`dy/dx = 0`。 GD 已找到`y = -1.25`的绝对最小值。 渐变建议不要进一步改变`x`
学习率的选择至关重要。 大的![](img/B14853_01_019.png)值可能找不到最小值,因为搜索只会在最小值附近来回摆动。 一方面,在找到最小值之前,较大的![](img/B14853_01_020.png)值可能需要进行大量迭代。 在有多个最小值的情况下,搜索可能会陷入局部最小值。
学习率的选择至关重要。 大的`ε`值可能找不到最小值,因为搜索只会在最小值附近来回摆动。 一方面,在找到最小值之前,较大的`ε`值可能需要进行大量迭代。 在有多个最小值的情况下,搜索可能会陷入局部最小值。
![](img/B14853_01_08.png)
......@@ -480,7 +480,7 @@ GD 通常不用于深度神经网络,因为遇到数百万个要训练的参
![](img/B14853_01_021.png)
在该等式中,![](img/B14853_01_022.png)和![](img/B14853_01_023.png)分别是损耗函数的参数和梯度张量。`g`由损失函数的偏导数计算得出。 出于 GPU 优化的目的,建议最小批量大小为 2 的幂。 在建议的网络中,`batch_size = 128`
在该等式中,`θ``g = 1/m ᐁ[θ] ΣL`分别是损耗函数的参数和梯度张量。`g`由损失函数的偏导数计算得出。 出于 GPU 优化的目的,建议最小批量大小为 2 的幂。 在建议的网络中,`batch_size = 128`
“公式 1.3.8”计算最后一层参数更新。 那么,我们如何调整前几层的参数呢? 在这种情况下,应用微分链规则将导数传播到较低层并相应地计算梯度。 该算法在深度学习中称为**反向传播**。 反向传播的详细信息超出了本书的范围。 但是,可以在[这里](http://neuralnetworksanddeeplearning.com)找到很好的在线参考。
......
......@@ -770,7 +770,7 @@ DenseNet 建议在`Dense`块之前加上`BN-ReLU-Conv2D`,以及许多是增长
图 2.4.3:两个密集块之间的过渡层
但是,在将特征图传递到平均池之前,使用`Conv2D(1)`将其数量减少某个压缩因子![](img/B14853_02_004.png)。DenseNet 在实验中使用![](img/B14853_02_005.png)。 例如,如果先前`Dense`块的最后串联的输出是`(64, 64, 512)`,则在`Conv2D(1)`之后,要素图的新尺寸将是`(64, 64, 256)`。 当压缩和降维放在一起时,过渡层由`BN-Conv2D(1)-AveragePooling2D`层组成。 实际上,批量归一化在卷积层之前。
但是,在将特征图传递到平均池之前,使用`Conv2D(1)`将其数量减少某个压缩因子`0 < θ < 1`。DenseNet 在实验中使用`θ = 0.5`。 例如,如果先前`Dense`块的最后串联的输出是`(64, 64, 512)`,则在`Conv2D(1)`之后,要素图的新尺寸将是`(64, 64, 256)`。 当压缩和降维放在一起时,过渡层由`BN-Conv2D(1)-AveragePooling2D`层组成。 实际上,批量归一化在卷积层之前。
现在,我们已经涵盖了 DenseNet 的重要概念。 接下来,我们将为`tf.keras`中的 CIFAR10 数据集构建并验证 DenseNet-BC。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册