提交 554c82ad 编写于 作者: W wizardforcel

2021-01-02 21:29:02

上级 84387f8d
......@@ -130,7 +130,7 @@ python3 dcgan-mnist-4.2.1.py
python3 name-of-the-file-in-listing
```
该代码示例的文件名包含在*列表*标题中。 本书使用*列表*标识文本中的代码示例。
该代码示例的文件名包含在“列表”标题中。 本书使用“列表”标识文本中的代码示例。
**粗体**:表示新的术语,重要的单词或您在屏幕上看到的单词,例如在菜单或对话框中,也显示在这样的文本中。 例如:StackedGAN 具有两个附加损失函数,即**条件****熵**
......
......@@ -742,7 +742,7 @@ DenseNet 使用另一种方法攻击梯度消失的问题。 代替使用快捷
`x[l] = H(x[0], x[1], x[2], x[l-1])`(公式 2.4.1)
`Conv2D`使用大小为 3 的内核。每层生成的特征图的数量称为增长率`k`。 通常,在 Huang 等人的论文“密集连接卷积网络”中,也使用`k = 12`,但是`k = 24`。 (2017)[5]。 因此,如果特征图`x[0]`的数量为`k[0]`,则特征图总数在末尾 *中的 4 层`Dense`块图 2.4.1* 为 4 x`k`+`k[0]`
`Conv2D`使用大小为 3 的内核。每层生成的特征图的数量称为增长率`k`。 通常,在 Huang 等人的论文“密集连接卷积网络”中,也使用`k = 12`,但是`k = 24`。 (2017)[5]。 因此,如果特征图`x[0]`的数量为`k[0]`,则“图 2.4.1”中,4 层`Dense`块的末尾的特征图总数为`4 x k + k[0]`
DenseNet 建议在`Dense`块之前加上`BN-ReLU-Conv2D`,以及许多是增长率两倍的特征图`k[0]`= 2 x`k`。 在`Dense`块的末尾,特征图的总数将为 4 x 12 + 2 x 12 = 72。
......
......@@ -6,7 +6,7 @@
与前面的章节相似,输入数据可以采用多种形式,包括语音,文本,图像或视频。 自编码器将尝试查找表示形式或一段代码,以便对输入数据执行有用的转换。 例如,当对自编码器进行降噪处理时,神经网络将尝试找到可用于将噪声数据转换为干净数据的代码。 嘈杂的数据可以是带有静态噪声的录音形式,然后将其转换为清晰的声音。 自编码器将自动从数据中自动学习代码,而无需人工标记。 这样,自编码器可以在**无监督**学习算法下分类为。
在本书的后续章节中,我们将研究**生成对抗网络****GAN**)和**变自编码器****VAE**) 也是无监督学习算法的代表形式。 这与我们在前几章中讨论过的监督学习算法相反,后者需要人工注释。
在本书的后续章节中,我们将研究**生成对抗网络****GAN**)和**变自编码器****VAE**) 也是无监督学习算法的代表形式。 这与我们在前几章中讨论过的监督学习算法相反,后者需要人工注释。
总之,本章介绍:
......@@ -45,7 +45,7 @@
![](img/B14853_03_006.png) (Equation 3.1.1)
在此示例中,m 是输出尺寸(例如,在 MNIST *中,m =宽度×高度×通道= 28×28×1 = 784* )。`x[i]`和![](img/B14853_03_007.png)分别是`x`和![](img/B14853_03_003.png)的元素。 由于损失函数是输入和输出之间差异的量度,因此我们可以使用替代的重建损失函数,例如二进制交叉熵或结构相似性指数(SSIM)。
在此示例中,m 是输出尺寸(例如,在 MNIST 中,`m = width × height × channels = 28 × 28 × 1 = 784`)。`x[i]`和![](img/B14853_03_007.png)分别是`x`和![](img/B14853_03_003.png)的元素。 由于损失函数是输入和输出之间差异的量度,因此我们可以使用替代的重建损失函数,例如二进制交叉熵或结构相似性指数(SSIM)。
与其他神经网络类似,自编码器会在训练过程中尝试使此错误或损失函数尽可能小。“图 3.1.1”显示了一个自编码器。 编码器是将输入`x`压缩为低维潜矢量`z`的功能。 该潜矢量代表输入分布的重要特征。 然后,解码器尝试以![](img/B14853_03_003.png)的形式从潜矢量中恢复原始输入。
......@@ -246,7 +246,7 @@ plt.show()
图 3.2.1:编码器模型由 Conv2D(32)-Conv2D(64)-Dense(16)组成,以生成低维潜矢量
清单 3.2.1 中的*中的解码器对潜在向量进行解压缩,以恢复 MNIST 数字。 解码器输入级是`Dense`层,它将接受潜在矢量。 单位的数量等于从编码器保存的`Conv2D`输出尺寸的乘积。 这样做是为了便于我们调整`Dense`层`Dense`层的输出大小,以最终恢复原始 MNIST 图像尺寸。*
列表 3.2.1 中的解码器对潜在向量进行解压缩,以恢复 MNIST 数字。 解码器输入级是`Dense`层,它将接受潜在矢量。 单位的数量等于从编码器保存的`Conv2D`输出尺寸的乘积。 这样做是为了便于我们调整`Dense``Dense`层的输出大小,以最终恢复原始 MNIST 图像尺寸。
解码器由三个`Conv2DTranspose`的堆栈组成。 在我们的案例中,我们将使用**转置的 CNN**(有时称为**解卷积**),它是解码器中常用的。 我们可以将转置的 CNN(`Conv2DTranspose`)想象成 CNN 的逆过程。
......@@ -280,7 +280,7 @@ plt.show()
在“图 3.2.5”中,我们可以看到特定数字的潜矢量聚集在空间的某个区域上。 例如,数字 0 在左下象限中,而数字 1 在右上象限中。 这种群集在图中得到了反映。 实际上,同一图显示了导航或从潜在空间生成新数字的结果,如图“图 3.2.5”所示。
例如,从*的中心开始,向右上象限改变 2 维潜矢量的值,这表明数字从 9 变为 1。这是可以预期的,因为从*图 3.2 开始 .5* ,我们可以看到数字 9 簇的潜在代码值在中心附近,数字 1 簇的潜在代码值在右上象限。*
例如,从中心开始,向右上象限改变 2 维潜矢量的值,这表明数字从 9 变为 1。这是可以预期的,因为从“图 3.2.5”开始,我们可以看到数字 9 簇的潜在代码值在中心附近,数字 1 簇的潜在代码值在右上象限。
对于“图 3.2.5”和“图 3.2.6”,我们仅研究了每个潜在矢量维在-4.0 和+4.0 之间的区域:
......@@ -410,11 +410,11 @@ def plot_results(models,
![](img/B14853_03_018.png) (Equation 3.3.2)
在此示例中,`m`是输出尺寸(例如,在 MNIST 中, *m =宽度×高度×通道= 28×28×1 = 784* )。 ![](img/B14853_03_019.png)和![](img/B14853_03_020.png)分别是`x_ori`和![](img/B14853_03_021.png)的元素。
在此示例中,`m`是输出尺寸(例如,在 MNIST 中,`m = width × height × channels = 28 × 28 × 1 = 784`)。 ![](img/B14853_03_019.png)和![](img/B14853_03_020.png)分别是`x_ori`和![](img/B14853_03_021.png)的元素。
为了实现 DAE,我们将需要对上一节中介绍的自编码器进行一些更改。 首先,训练输入数据应损坏的 MNIST 数字。 训练输出数据是原始的原始 MNIST 数字相同。 这就像告诉自编码器应校正的图像是什么,或要求它找出在图像损坏的情况下如何消除噪声。 最后,我们必须在损坏的 MNIST 测试数据上验证自编码器。
*图 3.3.2 左侧所示的 MNIST 数字 7 是实际损坏的图像输入。 右边的是经过训练的降噪自编码器的干净图像输出。*
“图 3.3.2"左侧所示的 MNIST 数字 7 是实际损坏的图像输入。 右边的是经过训练的降噪自编码器的干净图像输出。
“列表 3.3.1”:`denoising-autoencoder-mnist-3.3.1.py`
......@@ -884,7 +884,7 @@ plt.show()
一旦学习了潜在代码,就可以对原始输入分布执行许多结构操作。 为了更好地了解输入分布,可以使用低级嵌入(类似于本章内容)或通过更复杂的降维技术(例如 t)来可视化潜在矢量形式的隐藏结构。 -SNE 或 PCA。
除了去噪和着色外,自编码器还用于将输入分布转换为低维潜矢量,可以针对其他任务(例如,分割,检测,跟踪,重建和视觉理解)进一步对其进行处理。 在“第 8 章”,*变体自编码器(VAE)*中,我们将讨论 VAE,它们在结构上与自编码器相同,但具有可解释的潜在代码,这些代码可以产生连续的潜在矢量投影,因此有所不同。
除了去噪和着色外,自编码器还用于将输入分布转换为低维潜矢量,可以针对其他任务(例如,分割,检测,跟踪,重建和视觉理解)进一步对其进行处理。 在“第 8 章”,“变分自编码器(VAE)”中,我们将讨论 VAE,它们在结构上与自编码器相同,但具有可解释的潜在代码,这些代码可以产生连续的潜在矢量投影,因此有所不同。
在下一章中,我们将着手介绍 AI 最近最重要的突破之一,即 GAN。 在下一章中,我们将学习 GAN 的核心优势,即其综合看起来真实的数据的能力。
......
......@@ -127,7 +127,7 @@ DCGAN 实施以下设计原则:
我们可以将转置的 CNN(`Conv2DTranspose`)想象成 CNN 的逆过程。 在一个简单的示例中,如果 CNN 将图像转换为特征图,则转置的 CNN 将生成给定特征图的图像。 因此,转置的 CNN 在上一章的解码器中和本章的生成器中使用。
在对`strides = 2`进行两个`Conv2DTranspose`之后,特征图的大小将为 28 x 28 x *数量的过滤器*。 每个`Conv2DTranspose`之前都有批量规范化和 ReLU。 最后一层具有 *Sigmoid* 激活,可生成 28 x 28 x 1 假 MNIST 图像。 将每个像素标准化为与`[0, 255]`灰度级相对应的`[0.0, 1.0]`。 下面的“列表 4.2.1”显示了`tf.keras`中生成器网络的实现。 定义了一个函数来生成生成器模型。 由于整个代码的长度,我们将列表限制为正在讨论的特定行。
在对`strides = 2`进行两个`Conv2DTranspose`之后,特征图的大小将为`28 x 28 x n_filter`。 每个`Conv2DTranspose`之前都有批量规范化和 ReLU。 最后一层具有 *Sigmoid* 激活,可生成 28 x 28 x 1 假 MNIST 图像。 将每个像素标准化为与`[0, 255]`灰度级相对应的`[0.0, 1.0]`。 下面的“列表 4.2.1”显示了`tf.keras`中生成器网络的实现。 定义了一个函数来生成生成器模型。 由于整个代码的长度,我们将列表限制为正在讨论的特定行。
[完整的代码可在 GitHub 上获得](https://github.com/PacktPublishing/Advanced-Deep-Learning-with-Keras)
......
......@@ -772,7 +772,7 @@ def build_encoder(inputs, num_labels=10, feature1_dim=256):
| **网络** | **损失函数** | **编号** |
| GAN | ![](img/B14853_06_030.png)![](img/B14853_06_031.png) | 4.1.14.1.5 |
| 堆叠式 | ![](img/B14853_06_032.png)![](img/B14853_06_033.png)![](img/B14853_06_034.png)![](img/B14853_06_035.png)![](img/B14853_06_036.png)其中![](img/B14853_06_037.png)是权重, *i =编码器和 GAN ID* | 6.2.16.2.26.2.36.2.46.2.5 |
| 堆叠式 | ![](img/B14853_06_032.png)![](img/B14853_06_033.png)![](img/B14853_06_034.png)![](img/B14853_06_035.png)![](img/B14853_06_036.png)其中![](img/B14853_06_037.png)是权重,`i`是编码器和 GAN ID | 6.2.16.2.26.2.36.2.46.2.5 |
表 6.2.1:GAN 和 StackedGAN 的损失函数之间的比较。 `~p_data`表示从相应的编码器数据(输入,特征或输出)采样
......@@ -784,7 +784,7 @@ def build_encoder(inputs, num_labels=10, feature1_dim=256):
图 6.2.4:图 6.2.3 的简化版本,仅显示![](img/B14853_06_040.png)计算中涉及的网络元素
但是,条件损失函数引入了一个新问题。 发生器忽略输入噪声代码`z[i]`,仅依赖`f[i + 1]`。 熵损失函数“公式 6.2.4”中的![](img/B14853_06_041.png)确保发生器不会忽略噪声代码`z[i]`* Q 网络*从发生器的输出中恢复噪声代码。 恢复的噪声和输入噪声之间的差异也通过`L2`或欧几里德距离(MSE)进行测量。
但是,条件损失函数引入了一个新问题。 发生器忽略输入噪声代码`z[i]`,仅依赖`f[i + 1]`。 熵损失函数“公式 6.2.4”中的![](img/B14853_06_041.png)确保发生器不会忽略噪声代码`z[i]`*Q 网络*从发生器的输出中恢复噪声代码。 恢复的噪声和输入噪声之间的差异也通过`L2`或欧几里德距离(MSE)进行测量。
“图 6.2.5”显示了![](img/B14853_06_042.png)计算中涉及的网络元素:
......
......@@ -978,7 +978,7 @@ python3 cyclegan-7.1.1.py --mnist_svhn_g_source=cyclegan_mnist_svhn-g_ source.h5
在本章中,我们讨论了 CycleGAN 作为可用于图像翻译的算法。 在 CycleGAN 中,源数据和目标数据不一定要对齐。 我们展示了两个示例,*灰度 ↔ 颜色**MNIST ↔ SVHN* ,尽管 CycleGAN 可以执行许多其他可能的图像转换 。
在下一章中,我们将着手另一种生成模型,即**变自编码器****VAE**)。 VAE 具有类似的学习目标–如何生成新图像(数据)。 他们专注于学习建模为高斯分布的潜在矢量。 我们将以有条件的 VAE 和解开 VAE 中的潜在表示形式来证明 GAN 解决的问题中的其他相似之处。
在下一章中,我们将着手另一种生成模型,即**变自编码器****VAE**)。 VAE 具有类似的学习目标–如何生成新图像(数据)。 他们专注于学习建模为高斯分布的潜在矢量。 我们将以有条件的 VAE 和解开 VAE 中的潜在表示形式来证明 GAN 解决的问题中的其他相似之处。
# 3.参考
......
......@@ -2,7 +2,7 @@
# 变分自编码器(VAE)
与我们在之前的章节中讨论过的**生成对抗网络****GAN**)类似,**变自编码器****VAE**)[1] 属于生成模型家族。 VAE 的生成器能够在导航其连续潜在空间的同时产生有意义的输出。 通过潜矢量探索解码器输出的可能属性。
与我们在之前的章节中讨论过的**生成对抗网络****GAN**)类似,**变自编码器****VAE**)[1] 属于生成模型家族。 VAE 的生成器能够在导航其连续潜在空间的同时产生有意义的输出。 通过潜矢量探索解码器输出的可能属性。
在 GAN 中,重点在于如何得出近似输入分布的模型。 VAE 尝试对可解码的连续潜在空间中的输入分布进行建模。 这是 GAN 与 VAE 相比能够生成更真实信号的可能的潜在原因之一。 例如,在图像生成中,GAN 可以生成看起来更逼真的图像,而相比之下,VAE 生成的图像清晰度较差。
......@@ -145,7 +145,7 @@
图 8.1.2:解码器测试设置
通过重新参数化技巧解决了 VAE 上的最后一个问题,我们现在可以在`tf.keras`中实施和训练变自编码器。
通过重新参数化技巧解决了 VAE 上的最后一个问题,我们现在可以在`tf.keras`中实施和训练变自编码器。
## ALAS 与 Keras
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册