提交 99b80b5b 编写于 作者: W wizardforcel

2020-08-15 23:57:08

上级 435717bf
......@@ -73,7 +73,7 @@
# 约定
在本书中,您将找到许多可以区分不同类型信息的文本样式。 以下是这些样式的一些示例,并解释了其含义。 文本,数据库表名称,文件夹名称,文件名,文件扩展名,路径名,虚拟 URL,用户输入和 Twitter 句柄中的代码字显示如下:“在数据库中为 JIRA 创建新用户并授予该用户访问 我们刚刚使用以下命令创建了`jiradb`数据库:“
在本书中,您将找到许多可以区分不同类型信息的文本样式。 以下是这些样式的一些示例,并解释了其含义。 文本,数据库表名称,文件夹名称,文件名,文件扩展名,路径名,虚拟 URL,用户输入和 Twitter 句柄中的代码字显示如下:“我们刚刚使用以下命令创建了`jiradb`数据库,在数据库中为 JIRA 创建新用户并授予该用户访问权限”。
代码块设置如下:
......@@ -90,5 +90,5 @@
**新术语****重要词**以粗体显示。 您在屏幕上看到的单词,例如在菜单或对话框中,将以如下形式出现:从“管理”面板中选择“系统信息”。
Warnings or important notes appear like this.Tips and tricks appear like this.
警告或重要提示显示如下,提示和技巧显示如下。
......@@ -42,11 +42,11 @@
梯度值越高,权重值的变化越大,反之亦然。 现在,这一切都很好,但是当梯度达到零,因此权重没有变化时,我们到达高原时就会遇到问题。 当我们进入一个小坑(局部极小值)时,我们也可能遇到问题,因为当我们尝试移动到任一侧时,坡度将增加,从而迫使网络停留在坑中。
如第 2 章,“回归”中所讨论的,梯度下降有多种变体,旨在提高收敛性,避免了陷入局部极小值或高原的问题(增加动量,可变学习 率)。
如第 2 章,“回归”中所讨论的,梯度下降有多种变体,旨在提高收敛性,避免了陷入局部极小值或高原的问题(增加动量,可变学习率)。
TensorFlow 借助不同的优化器自动计算这些梯度。 但是,需要注意的重要一点是,由于 TensorFlow 将计算梯度,而梯度也将涉及激活函数的导数,因此重要的是,您选择的激活函数是可微的,并且在整个训练场景中最好具有非零梯度 。
感知器梯度下降的主要方法之一不同于第 2 章,“回归”,应用是为输出层定义目标函数,但可用于查找目标层的权重变化 隐藏层的神经元也是如此。 这是使用**反向传播****BPN**)算法完成的,其中输出端的错误会向后传播到隐藏层,并用于确定权重变化。 您将很快了解更多信息。
感知器梯度下降的主要方法之一不同于第 2 章,“回归”,应用是为输出层定义目标函数,但可用于查找目标层,以及隐藏层的神经元的权重变化。 这是使用**反向传播****BPN**)算法完成的,其中输出端的错误会向后传播到隐藏层,并用于确定权重变化。 您将很快了解更多信息。
# 激活函数
......@@ -117,7 +117,7 @@ with tf.Session() as sess:
![](img/609aa86e-74e6-486c-bb63-6a30f329c016.png)
3. **双曲正切激活函数**:在数学上,它是`(1 - exp(-2x) / (1 + exp(-2x))`。在形状上,它类似于 Sigmoid 函数,但是 它以 0 为中心,范围为-1 至 1。TensorFlow 具有内置函数`tf.tanh`,用于双曲正切激活函数:
3. **双曲正切激活函数**:在数学上,它是`(1 - exp(-2x) / (1 + exp(-2x))`。在形状上,它类似于 Sigmoid 函数,但是它以 0 为中心,范围为-1 至 1。TensorFlow 具有内置函数`tf.tanh`,用于双曲正切激活函数:
```py
# Plotting Hyperbolic Tangent Activation function
......@@ -153,7 +153,7 @@ print(out)
```
5. **整流线性单元****ReLU**)激活函数再次内置在 TensorFlow 库中。 激活函数类似于线性激活函数,但有一个大变化-对于活动的负值,神经元不触发(零输出),对于活动的正值,神经元的输出 与给定的活动相同:
5. **整流线性单元****ReLU**)激活函数再次内置在 TensorFlow 库中。 激活函数类似于线性激活函数,但有一个大变化-对于活动的负值,神经元不触发(零输出),对于活动的正值,神经元的输出与给定的活动相同:
```py
# Plotting ReLU Activation function
......
......@@ -533,7 +533,7 @@ imshow(style_image)
An example of Vicent Van Gogh painting as seen in https://commons.wikimedia.org/wiki/File:VanGogh-starry_night_ballance1.jpg
6. 下一步是按照原始论文中的描述定义 VGG 模型。 请注意,深度学习网络相当复杂,因为它结合了具有 ReLU 激活函数和最大池的多个 ConvNet 层。 另外需要注意的是,在原始论文《转移样式》(Leon A. Gatys,Alexander S. Ecker 和 Matthias Bethge 撰写的《一种艺术风格的神经算法》)中,许多实验表明,平均合并实际上优于 最大池化。 因此,我们将改用平均池:
6. 下一步是按照原始论文中的描述定义 VGG 模型。 请注意,深度学习网络相当复杂,因为它结合了具有 ReLU 激活函数和最大池的多个 ConvNet 层。 另外需要注意的是,在原始论文《转移样式》(Leon A. Gatys,Alexander S. Ecker 和 Matthias Bethge 撰写的《一种艺术风格的神经算法》)中,许多实验表明,平均合并实际上优于最大池化。 因此,我们将改用平均池:
```py
def load_vgg_model(path, image_height, image_width, color_channels):
......
......@@ -144,7 +144,7 @@ Note that the model uses multiple filters (with varying window sizes) to obtain
# 检查 VGG 预制网络了解了哪些过滤器
在本食谱中,我们将使用 [keras-vis](https://raghakot.github.io/keras-vis/),这是一个外部 Keras 软件包,用于直观检查预建的 VGG16 网络从中学到了什么 不同的过滤器。 这个想法是选择一个特定的 ImageNet 类别,并了解 VGG16 网络如何学会代表它。
在本食谱中,我们将使用 [keras-vis](https://raghakot.github.io/keras-vis/),这是一个外部 Keras 软件包,用于直观检查预建的 VGG16 网络从中学到了什么不同的过滤器。 这个想法是选择一个特定的 ImageNet 类别,并了解 VGG16 网络如何学会代表它。
# 做好准备
......@@ -293,7 +293,7 @@ plt.show()
# 还有更多...
GitHub 上的 [keras-vis 存储库](https://github.com/raghakot/keras-vis)提供了一组很好的可视化示例,这些示例说明了如何内部检查网络,包括最近的关注点 地图,其目的是在图像经常包含其他元素(例如草)时检测图像的哪个部分对特定类别(例如老虎)的训练贡献最大。 种子文章是[《深度卷积网络:可视化图像分类模型和显着性图》](https://arxiv.org/abs/1312.6034)(Karen Simonyan,Andrea Vedaldi,Andrew Zisserman),并在下面报告了从 Git 存储库中提取的示例,在该示例中,网络可以自行了解*定义为*老虎的图像中最突出的部分是:
GitHub 上的 [keras-vis 存储库](https://github.com/raghakot/keras-vis)提供了一组很好的可视化示例,这些示例说明了如何内部检查网络,包括最近的显着性地图,其目的是在图像经常包含其他元素(例如草)时检测图像的哪个部分对特定类别(例如老虎)的训练贡献最大。 种子文章是[《深度卷积网络:可视化图像分类模型和显着性图》](https://arxiv.org/abs/1312.6034)(Karen Simonyan,Andrea Vedaldi,Andrew Zisserman),并在下面报告了从 Git 存储库中提取的示例,在该示例中,网络可以自行了解*定义为*老虎的图像中最突出的部分是:
![](img/6f3615d0-e3ab-462c-8f9b-d15432b4cca6.png)
......@@ -1231,7 +1231,7 @@ print str(round(y_output[0,label]*100,2)).zfill(5), "% ", labelencoder.inverse_t
在互联网上,您可以找到 [Avi Singh](https://avisingh599.github.io/deeplearning/visual-qa/) 进行的更多实验,其中比较了不同的模型,包括简单的“袋装”语言的“单词”与图像的 CNN,仅 LSTM 模型以及 LSTM + CNN 模型-类似于本食谱中讨论的模型。 博客文章还讨论了每种模型的不同训练策略。
除此之外,有兴趣的读者可以在[互联网](https://github.com/anujshah1003/VQA-Demo-GUI)上找到一个不错的 GUI,它建立在 Avi Singh 演示的顶部,使您可以 交互式加载图像并提出相关问题。 还提供了 [YouTube 视频](https://www.youtube.com/watch?v=7FB9PvzOuQY)
除此之外,有兴趣的读者可以在[互联网](https://github.com/anujshah1003/VQA-Demo-GUI)上找到一个不错的 GUI,它建立在 Avi Singh 演示的顶部,使您可以交互式加载图像并提出相关问题。 还提供了 [YouTube 视频](https://www.youtube.com/watch?v=7FB9PvzOuQY)
# 通过六种不同方式对视频进行预训练网络分类
......
......@@ -95,7 +95,7 @@ An example of an LSTM cell
# 门控循环单元(GRU)和窥孔 LSTM
近年来提出了许多 LSTM 细胞的变体。 其中两个真的很受欢迎。 窥孔 LSTM 允许栅极层查看单元状态,如下图虚线所示,而**门控循环单元****GRU**合并了隐藏状态和单元状态 进入一个单一的信息渠道。
近年来提出了许多 LSTM 细胞的变体。 其中两个真的很受欢迎。 窥孔 LSTM 允许栅极层查看单元状态,如下图虚线所示,而**门控循环单元****GRU**将隐藏状态和单元状态和合并为一个单一的信息渠道。
同样,GRU 和 Peephole LSTM 都可以用作标准 RNN 单元的黑盒插件,而无需了解基础数学。 这两个单元都可用于解决梯度消失的问题,并可用于构建深度神经网络:
......@@ -148,7 +148,7 @@ An example of sequence models for NMT as seen in https://github.com/lmthang/thes
* RNN 可以具有一个嵌入层,该层将单词映射到一个嵌入空间中,在该空间中相似的单词恰好被映射得非常近。
* RNNs 可以使用简单的或者复发的细胞,或 LSTM,或窥视孔 LSTM,或越冬。
仍然参考博士学位论文[《神经机器翻译》](https://github.com/lmthang/thesis/blob/master/thesis.pdf),我们可以使用嵌入层来映射 将输入语句放入嵌入空间。 然后,有两个 RNN *粘在一起*——源语言的编码器和目标语言的解码器。 如您所见,存在多个隐藏层,并且有两个流程:前馈垂直方向连接这些隐藏层,水平方向是将知识从上一步转移到下一层的递归部分:
仍然参考博士学位论文[《神经机器翻译》](https://github.com/lmthang/thesis/blob/master/thesis.pdf),我们可以使用嵌入层来将输入语句放入嵌入空间。 然后,有两个 RNN *粘在一起*——源语言的编码器和目标语言的解码器。 如您所见,存在多个隐藏层,并且有两个流程:前馈垂直方向连接这些隐藏层,水平方向是将知识从上一步转移到下一层的递归部分:
![](img/45216119-cbfa-47f0-9080-b6256eefb995.png)
......@@ -438,7 +438,7 @@ An example of BLEU metrics with attention in Tensorboard
值得记住的是 seq2seq 不仅可以用于机器翻译。 让我们看一些例子:
* Lukasz Kaiser 在[作为外语的语法](https://arxiv.org/abs/1412.7449)中,使用 seq2seq 模型来构建选区解析器。 选区分析树将文本分为多个子短语。 树中的非终结符是短语的类型,终结符是句子中的单词,并且边缘未标记。
* seq2seq 的另一个应用是 SyntaxNet,又名 Parsey McParserFace([语法分析器](https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html)),它是 许多 NLU 系统中的关键第一组件。 给定一个句子作为输入,它将使用描述单词的句法功能的**词性****POS**)标签标记每个单词,并确定单词中句法之间的句法关系 句子,在依存关系分析树中表示。 这些句法关系与所讨论句子的潜在含义直接相关。
* seq2seq 的另一个应用是 SyntaxNet,又名 Parsey McParserFace([语法分析器](https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html)),它是许多 NLU 系统中的关键第一组件。 给定一个句子作为输入,它将使用描述单词的句法功能的**词性****POS**)标签标记每个单词,并确定句子中单词之间的句法关系,在依存关系分析树中表示。 这些句法关系与所讨论句子的潜在含义直接相关。
下图使我们对该概念有了一个很好的了解:
......
......@@ -106,7 +106,7 @@ def reduce(self, n_dimensions=None, keep_info=None):
return session.run(pca, feed_dict={self._X: self._data})
```
6. 我们的`TF_PCA`类已准备就绪。 现在,我们将使用它来将 MNIST 数据从尺寸为 784(28 x 28)的每个输入减少为尺寸为 3 的每个点的新数据。这里,我们仅保留了 10% 的信息以便于查看,但是通常需要保留大约 80% 的信息:
6. 我们的`TF_PCA`类已准备就绪。 现在,我们将使用它来将 MNIST 数据从尺寸为 784(28 x 28)的每个输入减少为尺寸为 3 的每个点的新数据。这里,我们仅保留了 10% 的信息以便于查看,但是通常需要保留大约 80% 的信息:
```py
tf_pca.fit()
......@@ -629,7 +629,7 @@ RBM 可用于降维,特征提取和协作过滤。 RBM 中的训练可分为
`p(h[i]|v[0]) = σ(V^T · W + c)[i]`
**向后传递**:隐藏的单元表示(`h[0]`)然后通过相同的权重`W`传递回可见单元,但是 不同的偏置 *c* ,它们在其中重构输入。 再次,对输入进行采样:
**向后传递**:隐藏的单元表示(`h[0]`)然后通过相同的权重`W`但不同的偏置`c`传递回可见单元,它们在其中重构输入。 再次,对输入进行采样:
`p(v[i]|h[0]) = σ(W^T · h[0] + b)[i]`*
......
......@@ -20,7 +20,7 @@
`r = f(y) = f(h(x))`
我们将误差`e`定义为原始输入`x`与重构信号`r`之间的差,`e = x - r`。然后,网络通过减少**均方误差****MSE**)进行学习,并且像 MLP 一样,该错误会传播回隐藏层。 下图显示了自编码器,其中编码器和解码器分别突出显示。 自编码器可以具有权重分配,也就是说,解码器和编码器的权重只是彼此的换位,这可以在训练参数数量较少时帮助网络更快地学习,但同时会降低编码器的自由度。 网络。 它们与第 7 章“无监督学习”的 RBM 非常相似,但有一个很大的区别-自编码器中神经元的状态是确定性的,而在 RBM 中,神经元的状态是确定性的 神经元是概率性的:
我们将误差`e`定义为原始输入`x`与重构信号`r`之间的差,`e = x - r`。然后,网络通过减少**均方误差****MSE**)进行学习,并且像 MLP 一样,该错误会传播回隐藏层。 下图显示了自编码器,其中编码器和解码器分别突出显示。 自编码器可以具有权重分配,也就是说,解码器和编码器的权重只是彼此的换位,这可以在训练参数数量较少时帮助网络更快地学习,但同时会降低编码器的自由度。 网络。 它们与第 7 章“无监督学习”的 RBM 非常相似,但有一个很大的区别-自编码器中神经元的状态是确定性的,而在 RBM 中,神经元是概率性的:
![](img/e02f44f9-d555-4a46-9f16-f3b0307bf6ce.png)
......@@ -623,7 +623,7 @@ CAE 是其中编码器和解码器均为 CNN 网络的一种 CAE。 编码器的
# 准备...
从第 4 章“卷积神经网络”中,您了解到,随着添加卷积层,传递到下一层的信息在空间范围上会减少,但是在自编码器中,重建的图像应该是相同的 大小和深度作为输入图像。 这意味着解码器应以某种方式对图像进行大小调整和卷积以重建原始图像。 与卷积一起增加空间范围的一种方法是借助**转置的卷积层**。 通过`tf.nn.conv2d_transpose`可以轻松地在 TensorFlow 中实现这些功能,但是发现转置的卷积层会在最终图像中产生伪像。 奥古斯都·奥德纳(Augustus Odena)等。 [1]在他们的工作中表明,可以通过使用最近邻或双线性插值(上采样)再加上卷积层来调整图层的大小来避免这些伪像。 他们通过`tf.image.resize_images`实现了最近邻插值,取得了最佳结果; 我们将在此处采用相同的方法。
从第 4 章“卷积神经网络”中,您了解到,随着添加卷积层,传递到下一层的信息在空间范围上会减少,但是在自编码器中,重建的图像应该有输入图像的相同的大小和深度。 这意味着解码器应以某种方式对图像进行大小调整和卷积以重建原始图像。 与卷积一起增加空间范围的一种方法是借助**转置的卷积层**。 通过`tf.nn.conv2d_transpose`可以轻松地在 TensorFlow 中实现这些功能,但是发现转置的卷积层会在最终图像中产生伪像。 奥古斯都·奥德纳(Augustus Odena)等。 [1]在他们的工作中表明,可以通过使用最近邻或双线性插值(上采样)再加上卷积层来调整图层的大小来避免这些伪像。 他们通过`tf.image.resize_images`实现了最近邻插值,取得了最佳结果; 我们将在此处采用相同的方法。
# 怎么做...
......
......@@ -284,7 +284,7 @@ if __name__ == '__main__':
# Q 学习平衡购物车
如导言所述,我们有一个由状态`s``s ∈ S`,其中`S`是所有可能状态的集合)描述的环境 可以执行动作`a``a ∈ A`,其中`A`由所有可能的动作组成),从而导致主体从一种状态移动到另一种状态 。 代理因其行为而受到奖励,代理的目标是使奖励最大化。 在 Q 学习中,代理通过计算最大化报酬的状态-动作组合的数量(`R`)来学习要采取的动作(策略,`π`)。 在选择行动时,代理人不仅要考虑现在的奖励,而且要考虑未来的折扣。
如导言所述,我们有一个由状态`s``s ∈ S`,其中`S`是所有可能状态的集合)描述的环境可以执行动作`a``a ∈ A`,其中`A`由所有可能的动作组成),从而导致主体从一种状态移动到另一种状态 。 代理因其行为而受到奖励,代理的目标是使奖励最大化。 在 Q 学习中,代理通过计算最大化报酬的状态-动作组合的数量(`R`)来学习要采取的动作(策略,`π`)。 在选择行动时,代理人不仅要考虑现在的奖励,而且要考虑未来的折扣。
`Q: S × A → R`
......@@ -978,7 +978,7 @@ def preprocess(I):
```
8. 其余的很简单-我们创建一个游戏环境,定义要持有的数组(状态,动作,奖励,状态),并使代理学习大量情节(休息或连续不断),这完全取决于您的计算能力 资源)。 这里要注意的重要一点是,代理没有按动作步骤学习。 相反,代理使用一个情节的完整(状态,动作,奖励,状态)集来纠正其策略。 这可能会占用大量内存:
8. 其余的很简单-我们创建一个游戏环境,定义要持有的数组(状态,动作,奖励,状态),并使代理学习大量情节(休息或连续不断),这完全取决于您的计算能力资源)。 这里要注意的重要一点是,代理没有按动作步骤学习。 相反,代理使用一个情节的完整(状态,动作,奖励,状态)集来纠正其策略。 这可能会占用大量内存:
```py
if __name__ == '__main__':
......
......@@ -10,7 +10,7 @@
# 介绍
在本章中,我们将讨论如何将**生成对抗网络****GAN**)用于深度学习领域,其中关键方法是通过同时训练鉴别器来挑战图像来训练图像生成器 后者用于改进。 可以将相同的方法应用于不同于 Image 的域。 另外,我们将讨论变分自编码器。
在本章中,我们将讨论如何将**生成对抗网络****GAN**)用于深度学习领域,其中关键方法是训练图像生成器来挑战鉴别器,并同时训练鉴别器来改进生成器。 可以将相同的方法应用于不同于图像领域。 另外,我们将讨论变分自编码器。
GAN 已被深度学习之父之一 Yann LeCun 定义为[“这是深度学习的突破”](https://www.quora.com/What-are-some-recent-and-potentially-upcoming-breakthroughs-in-deep-learning)。 GAN 能够学习如何再现看起来真实的合成数据。 例如,计算机可以学习如何绘制和创建逼真的图像。 这个想法最初是由与蒙特利尔大学 Google Brain 合作的 Ian Goodfellow 提出的,最近由 [OpenAI](https://openai.com/) 提出。
......@@ -18,7 +18,7 @@ GAN 已被深度学习之父之一 Yann LeCun 定义为[“这是深度学习的
通过将其视为类似于*艺术伪造*的方式,可以很容易地理解 GAN 的关键过程,这是创作被误认为其他人(通常是更著名的艺术家)的艺术品的过程。 GAN 同时训练两个神经网络。
**生成器**`G(Z)`造成伪造的一种,而**鉴别器**`D(Y)`就是一种 可以根据对真实艺术品和复制品的观察来判断复制品的逼真度。 `D(Y)`接受输入 Y(例如图像),并投票决定输入的真实程度。 通常,接近零的值表示*真实*,而接近一的值表示*伪造*`G(Z)`从随机噪声`Z`中获取输入,并训练自己以欺骗 D 认为`G(Z)`产生的任何东西都是真实的。 因此,训练鉴别器`D(Y)`的目标是,从为每个来自真实数据分布的图像最大化`D(Y)`,并为每个不来自真实数组的图像最小化`D(Y)`,而不是来自真实数据分布的每个图像。 因此,G 和 D 扮演相反的游戏:因此称为对抗训练。 请注意,我们以交替的方式训练 G 和 D,其中它们的每个目标都表示为通过梯度下降优化的损失函数。 生成模型学习如何越来越好地进行伪造,而鉴别模型学习如何越来越好地识别伪造。
**生成器**`G(Z)`生成赝品,而**鉴别器**`D(Y)`可以根据对真实艺术品和复制品的观察来判断复制品的逼真度。 `D(Y)`接受输入 Y(例如图像),并投票决定输入的真实程度。 通常,接近零的值表示*真实*,而接近一的值表示*伪造*`G(Z)`从随机噪声`Z`中获取输入,并训练自己以欺骗 D 认为`G(Z)`产生的任何东西都是真实的。 因此,训练鉴别器`D(Y)`的目标是,从为每个来自真实数据分布的图像最大化`D(Y)`,并为每个不来自真实数组的图像最小化`D(Y)`,而不是来自真实数据分布的每个图像。 因此,G 和 D 扮演相反的游戏:因此称为对抗训练。 请注意,我们以交替的方式训练 G 和 D,其中它们的每个目标都表示为通过梯度下降优化的损失函数。 生成模型学习如何越来越好地进行伪造,而鉴别模型学习如何越来越好地识别伪造。
鉴别器网络(通常是标准卷积神经网络)试图对输入图像是真实的还是生成的进行分类。 一个重要的新思想是反向传播鉴别器和生成器,以调整生成器的参数,以使生成器可以学习如何在越来越多的情况下欺骗鉴别器。 最后,生成器将学习如何生成与真实图像无法区分的图像:
......@@ -179,7 +179,7 @@ def plot(samples):
return fig
```
7. 现在让我们定义训练功能。 首先,让我们读取 MNIST 数据,然后定义一个具有一个用于标准 MNIST 手写字符的通道的 28 x 28 形状的矩阵 X。 然后,让我们定义大小为 100 的 z 噪声矢量,这是 GAN 论文中提出的一个常见选择。 下一步是在 z 上调用生成器,然后将结果分配给 G。之后,我们将 X 传递给鉴别符,而无需重用。 然后,我们将伪造/伪造的 G 结果传递给鉴别器,从而重用学习到的权重。 这方面的一个重要方面是我们如何选择鉴别器的损失函数,该函数是两个交叉熵的和:一个交叉熵,一个用于实字符,其中所有真实 MNIST 字符的标签都设置为一个,另一个用于伪造的字符,其中 所有伪造的字符的标签都设置为零。 鉴别器和生成器以交替顺序运行 100,000 步。 每 500 步,会从学习到的分布中抽取一个样本,以打印该生成器到目前为止所学的内容。 这就是定义新周期的条件,结果将在下一节中显示。 让我们看看实现我们刚刚描述的代码片段。
7. 现在让我们定义训练功能。 首先,让我们读取 MNIST 数据,然后定义一个具有一个用于标准 MNIST 手写字符的通道的 28 x 28 形状的矩阵 X。 然后,让我们定义大小为 100 的 z 噪声矢量,这是 GAN 论文中提出的一个常见选择。 下一步是在 z 上调用生成器,然后将结果分配给 G。之后,我们将 X 传递给鉴别符,而无需重用。 然后,我们将伪造/伪造的 G 结果传递给鉴别器,从而重用学习到的权重。 这方面的一个重要方面是我们如何选择鉴别器的损失函数,该函数是两个交叉熵的和:一个交叉熵,一个用于实字符,其中所有真实 MNIST 字符的标签都设置为一个,另一个用于伪造的字符,其中所有伪造的字符的标签都设置为零。 鉴别器和生成器以交替顺序运行 100,000 步。 每 500 步,会从学习到的分布中抽取一个样本,以打印该生成器到目前为止所学的内容。 这就是定义新周期的条件,结果将在下一节中显示。 让我们看看实现我们刚刚描述的代码片段。
```py
def train(logdir, batch_size):
......@@ -428,7 +428,7 @@ def plot(samples):
return fig
```
9. 现在让我们定义训练功能。 首先,让我们读取 MNIST 数据,然后定义一个具有一个用于标准 MNIST 手写字符的通道的 28 x 28 形状的矩阵 X。 然后,让我们定义大小为 100 的 z 噪声向量,这是 GAN 论文中提出的一个常见选择。 下一步是在 z 上调用生成器,然后将结果分配给 G。之后,我们将 X 传递给鉴别符,而无需重用。 然后,我们将伪造/伪造的 G 结果传递给鉴别器,从而重用学习到的权重。 这方面的一个重要方面是我们如何选择鉴别函数的损失函数,该函数是两个交叉熵的和:一个用于实字符,其中所有真实 MNIST 字符的标号都设置为 1,一个用于遗忘字符,其中所有 伪造的字符的标签设置为零。 鉴别器和生成器以交替顺序运行 100,000 步。 每 500 步,会从学习到的分布中抽取一个样本,以打印该生成器到目前为止所学的内容。 这就是定义新周期的条件,结果将在下一部分中显示。 训练功能代码段报告如下
9. 现在让我们定义训练功能。 首先,让我们读取 MNIST 数据,然后定义一个具有一个用于标准 MNIST 手写字符的通道的 28 x 28 形状的矩阵 X。 然后,让我们定义大小为 100 的 z 噪声向量,这是 GAN 论文中提出的一个常见选择。 下一步是在 z 上调用生成器,然后将结果分配给 G。之后,我们将 X 传递给鉴别符,而无需重用。 然后,我们将伪造/伪造的 G 结果传递给鉴别器,从而重用学习到的权重。 这方面的一个重要方面是我们如何选择鉴别函数的损失函数,该函数是两个交叉熵的和:一个用于实字符,其中所有真实 MNIST 字符的标号都设置为 1,一个用于遗忘字符,其中所有伪造的字符的标签设置为零。 鉴别器和生成器以交替顺序运行 100,000 步。 每 500 步,会从学习到的分布中抽取一个样本,以打印该生成器到目前为止所学的内容。 这就是定义新周期的条件,结果将在下一部分中显示。 训练功能代码段报告如下
```py
def train(logdir, batch_size):
......
......@@ -18,7 +18,7 @@
我强烈建议读者看一看[大型分布式深度网络](https://research.google.com/archive/large_deep_networks_nips2012.html)(Jeffrey Dean,Greg S.Corrado,Rajat Monga,Kai Chen,Matthieu Devin,Quoc V.Le,Mark Z.Mao,Marc'Aurelio Ranzato,Andrew Senior ,Paul Tucker,Ke Yang 和 Andrew Y. Ng。 NIPS,2012 年)
本文的一项关键结果是证明可以运行分布式**随机梯度下降****SGD**),其中多个节点在数据碎片上并行工作,并且独立且异步地更新 通过将更新发送到参数服务器来实现梯度。 引用论文摘要:
本文的一项关键结果是证明可以运行分布式**随机梯度下降****SGD**),其中多个节点在数据碎片上并行工作,并且通过将更新发送到参数服务器,来实现梯度的独立和异步更新。 引用论文摘要:
我们的实验揭示了关于大规模非凸优化的几个令人惊讶的结果。 首先,异步 SGD 很少用于非凸问题,对于训练深度网络非常有效,特别是与 Adagrad 自适应学习率结合使用时。
......@@ -798,7 +798,7 @@ GPU 仅在 P2 实例创建中可用,并且默认情况下不可用,要获得
![](img/10716413-09c1-49c7-9c5c-207de1610b48.png)
最后,在启动实例时,将要求您创建一个密钥对,以允许您登录到特定实例,您将需要创建一个密钥对并下载相应的`.pem`文件,您将使用此文件 以便以后记录。
最后,在启动实例时,将要求您创建一个密钥对,以允许您登录到特定实例,您将需要创建一个密钥对并下载相应的`.pem`文件,您将使用文件以便后续记录。
# 怎么做...
......
......@@ -20,7 +20,7 @@
![](img/23d54b43-728d-4230-b0ab-4d219de2c679.png)
Quoc 和 Barret 将 AutoML 技术用于神经体系结构搜索应用于 [Penn Treebank 数据集](https://en.wikipedia.org/wiki/Treebank),这是语言建模的著名基准。 他们的结果改进了目前被认为是最先进的手动设计网络。 特别是,他们在 Penn Treebank 上实现了 62.4 的测试集困惑,这比以前的最新模型好 3.6 困惑。 同样,在 [CIFAR-10 数据集](https://www.cs.toronto.edu/~kriz/cifar.html)上,该方法可以设计一种新颖的网络架构,与 测试集准确性方面最好的人类发明架构。 提出的 CIFAR-10 模型实现了 3.65 的测试错误率,比使用类似架构方案的最新技术模型好 0.09%,并且快 1.05 倍。
Quoc 和 Barret 将 AutoML 技术用于神经体系结构搜索应用于 [Penn Treebank 数据集](https://en.wikipedia.org/wiki/Treebank),这是语言建模的著名基准。 他们的结果改进了目前被认为是最先进的手动设计网络。 特别是,他们在 Penn Treebank 上实现了 62.4 的测试集困惑,这比以前的最新模型好 3.6 困惑。 同样,在 [CIFAR-10 数据集](https://www.cs.toronto.edu/~kriz/cifar.html)上,该方法可以设计一种新颖的网络架构,与测试集准确性方面最好的人类发明架构旗鼓相当。 提出的 CIFAR-10 模型实现了 3.65 的测试错误率,比使用类似架构方案的最新技术模型好 0.09%,并且快 1.05 倍。
# 元学习块
......@@ -49,7 +49,7 @@ MAML 能够在流行的少拍图像分类基准上大大胜过许多现有方法
* Google 提出了[采用 RNN 作为控制器的方法](https://research.googleblog.com/2017/05/using-machine-learning-to-explore.html),该方法使用机器学习来探索神经网络架构。
* [《带有增强学习的神经体系结构搜索》](https://arxiv.org/abs/1611.01578)(Barret Zoph,Quoc V. Le)是一篇开创性的论文,它证明了有关 Google 方法的更多细节。 但是,RNN 不是唯一的选择。
* [《图像分类器的大规模发展》](https://arxiv.org/abs/1703.01041)(Esteban Real,Sherry Moore,Andrew Selle,Saurabh Saxena,Yutaka Leon Suematsu,Jie Tan,Quoc Le,Alex Kurakin,2017 年)提出在进化遗传算法中使用遗传计算来探索新的候选网络。
* [《学习用于可伸缩图像识别的可转移体系结构》](https://arxiv.org/abs/1707.07012)(Barret Zoph,Vijay Vasudevan,Jonathon Shlens,Quoc V. Le)提出了 在 CIFAR 上学习的单元,用于改善 ImageNet 分类。
* [《学习用于可伸缩图像识别的可转移体系结构》](https://arxiv.org/abs/1707.07012)(Barret Zoph,Vijay Vasudevan,Jonathon Shlens,Quoc V. Le)提出了在 CIFAR 上学习的单元,用于改善 ImageNet 分类。
* [《构建可以建立人工智能的 AI》](https://www.nytimes.com/2017/11/05/technology/machine-learning-artificial-intelligence-ai.html):谷歌和其他公司为争夺一小部分研究人员而奋斗,他们正在寻找自动方法来应对人工智能专家的短缺。
* [《用于快速适应深度网络的模型不可知元学习》](https://arxiv.org/abs/1703.03400)(切尔西·芬恩(Chelsea Finn),彼得·阿比耶尔(Pieter Abbeel),谢尔盖·莱文(Sergey Levine),2017 年)。
* [《通过梯度下降学习》](https://arxiv.org/abs/1606.04474)(Marcin Andrychowicz,Misha Denil,Sergio Gomez,Matthew W. Hoffman,David Pfau,Tom Schaul,Brendan Shillingford,Nando de Freitas)展示了如何将优化算法的设计转换为学习问题,从而使该算法能够自动学习感兴趣的问题中的结构。 LSMT 学习的算法在训练任务上胜过手工设计的竞争对手,并且可以很好地推广到结构相似的新任务。 该算法的代码可在 [GitHub](https://github.com/deepmind/learning-to-learn) 上获得。
......@@ -82,8 +82,8 @@ L ![](img/32f13c94-c144-4116-bd64-e97805948eb6.png)
近年来,连体网络已用于许多应用程序。 他们在 LeCun 论文中首次使用的是签名验证。 从那时起,出现了许多应用程序,我们将介绍一些最近的应用程序:
* [与连体网络进行说话人和语音相似性的联合学习](https://pdfs.semanticscholar.org/4ffe/3394628a8a0ffd4cba1a77ea85e197bd4c22.pdf):他们训练了一个多输出连体网络,其中一个输出用于语音相似性和 其他为讲者相似。 他们将工作扩展到 Triamese 网络。
* [用于对象跟踪的全卷积连体网络](https://link.springer.com/chapter/10.1007/978-3-319-48881-3_56):他们使用在 ILSVRC15 数据集上训练的卷积连体网络 视频中的目标检测。
* [与连体网络进行说话人和语音相似性的联合学习](https://pdfs.semanticscholar.org/4ffe/3394628a8a0ffd4cba1a77ea85e197bd4c22.pdf):他们训练了一个多输出连体网络,其中一个输出用于语音相似性,其他用于演讲者相似性。 他们将工作扩展到 Triamese 网络。
* [用于对象跟踪的全卷积连体网络](https://link.springer.com/chapter/10.1007/978-3-319-48881-3_56):他们使用在 ILSVRC15 数据集上训练的卷积连体网络进行视频中的目标检测。
* 我们站在一起:[连体网络进行类似问题的检索](http://www.aclweb.org/anthology/P16-1036):本文使用连体网络来查找当前问题和已归档问题之间的语义相似性 。 他们还使用了卷积连体网络。
除此之外,还对连体网络进行了[脸部验证/识别](https://github.com/harveyslash/Facial-Similarity-with-Siamese-Networks-in-Pytorch)[它们已用于问题解答](https://arxiv.org/pdf/1512.05193v2.pdf)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册