提交 96ebacc3 编写于 作者: W wizardforcel

2020-09-11 16:41:46

上级 4d5257ce
...@@ -28,7 +28,7 @@ TensorFlow 是一个开源软件库,用于实现机器学习和深度学习系 ...@@ -28,7 +28,7 @@ TensorFlow 是一个开源软件库,用于实现机器学习和深度学习系
第 3 章,“机器学习入门”,介绍了一些机器学习模型。 我们开始实现线性回归算法,该算法与数据之间的建模关系有关。 本章的主要重点是解决机器学习中的两个基本问题。 分类,即如何将每个新输入分配给可能的给定类别之一; 数据聚类,这是将一组对象进行分组的任务,以使同一组中的对象比其他组中的对象更相似。 第 3 章,“机器学习入门”,介绍了一些机器学习模型。 我们开始实现线性回归算法,该算法与数据之间的建模关系有关。 本章的主要重点是解决机器学习中的两个基本问题。 分类,即如何将每个新输入分配给可能的给定类别之一; 数据聚类,这是将一组对象进行分组的任务,以使同一组中的对象比其他组中的对象更相似。
第 4 章,“神经网络介绍”提供了神经网络的快速详细介绍。 这些是代表元件之间的互连的数学模型,即人工神经元。 它们是在某种程度上模仿活神经元特性的数学结构。 神经网络为深度学习算法的架构奠定了基础。 然后实现了两种基本类型的神经网络:用于分类问题的单层感知器和多层感知器 第 4 章,“神经网络介绍”提供了神经网络的快速详细介绍。 这些是代表元件之间的互连的数学模型,即人工神经元。 它们是在某种程度上模仿活神经元特性的数学结构。 神经网络为深度学习算法的架构奠定了基础。 然后实现了两种基本类型的神经网络:用于分类问题的单层感知机和多层感知机
第 5 章,“深度学习”概述了深度学习算法。 直到最近几年,深度学习才收集了几年前难以想象的大量结果。 我们将展示如何实现两种基本的深度学习架构,即卷积神经网络(CNN)和递归神经网络(RNN),分别用于图像识别和语音翻译问题。 第 5 章,“深度学习”概述了深度学习算法。 直到最近几年,深度学习才收集了几年前难以想象的大量结果。 我们将展示如何实现两种基本的深度学习架构,即卷积神经网络(CNN)和递归神经网络(RNN),分别用于图像识别和语音翻译问题。
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* 线性回归 * 线性回归
* MNIST 数据集 * MNIST 数据集
* 分类器 * 分类器
* 最近邻算法 * 最近邻算法
* 数据聚类 * 数据聚类
* k-均值算法 * k-均值算法
...@@ -123,8 +123,8 @@ cost_function = tf.reduce_mean(tf.square(y - y_point)) ...@@ -123,8 +123,8 @@ cost_function = tf.reduce_mean(tf.square(y - y_point))
为了使`cost_function`最小化,我们使用*梯度下降*的优化算法。 给定几个变量的数学函数,梯度下降允许找到该函数的局部最小值。 该技术如下: 为了使`cost_function`最小化,我们使用*梯度下降*的优化算法。 给定几个变量的数学函数,梯度下降允许找到该函数的局部最小值。 该技术如下:
* **在函数域的任意第一点评估**,函数本身及其梯度。 梯度表示函数趋向于最小的方向。 * **在函数域的任意第一个点评估函数本身及其梯度**。 梯度表示函数趋向于最小的方向。
* **在渐变指示的方向上选择**第二点。 如果此第二点的函数的值小于在第一点计算的值,则下降可以继续。 * **在渐变指示的方向上选择第二个点**。 如果此第二点的函数的值小于在第一点计算的值,则下降可以继续。
您可以参考下图来直观地了解算法: 您可以参考下图来直观地了解算法:
...@@ -352,7 +352,7 @@ MNIST 的数字八 ...@@ -352,7 +352,7 @@ MNIST 的数字八
3. 在训练集上训练算法,并通过验证设置任何控制参数。 3. 在训练集上训练算法,并通过验证设置任何控制参数。
4. 通过应用一组新实例(测试集)评估分类器的准确性和性能。 4. 通过应用一组新实例(测试集)评估分类器的准确性和性能。
## 最近邻算法 ## 最近邻算法
**K 最近邻****KNN**)是用于分类或回归的监督学习算法。 它是一个系统,根据其与内存中存储的对象之间的距离来分配测试样品的类别。 **K 最近邻****KNN**)是用于分类或回归的监督学习算法。 它是一个系统,根据其与内存中存储的对象之间的距离来分配测试样品的类别。
...@@ -360,7 +360,7 @@ MNIST 的数字八 ...@@ -360,7 +360,7 @@ MNIST 的数字八
![The nearest neighbor algorithm](img/B05474_03_09.jpg) ![The nearest neighbor algorithm](img/B05474_03_09.jpg)
`n`是空间的尺寸。 这种分类方法的优点是能够对类别*无法线性分离*的对象进行分类。 考虑到训练数据*的*小扰动*不会显着影响*结果,因此这是一个稳定的分类器。 但是,最明显的缺点是它不能提供真正的数学模型。 相反,对于每个新分类,应通过将新数据添加到所有初始实例并针对所选 K 值重复计算过程来执行。 `n`是空间的尺寸。 这种分类方法的优点是能够对类别*无法线性分离*的对象进行分类。 考虑到训练数据*小扰动*不会显着影响结果,因此这是一个稳定的分类器。 但是,最明显的缺点是它不能提供真正的数学模型。 相反,对于每个新分类,应通过将新数据添加到所有初始实例并针对所选 K 值重复计算过程来执行。
此外,它需要相当大量的数据才能进行实际的预测,并且对分析数据的噪声敏感。 此外,它需要相当大量的数据才能进行实际的预测,并且对分析数据的噪声敏感。
...@@ -434,7 +434,7 @@ tf.reduce_sum(x, [0, 1]) ==> 6 ...@@ -434,7 +434,7 @@ tf.reduce_sum(x, [0, 1]) ==> 6
``` ```
最后,为了最小化距离函数,我们使用`arg_min`,它返回距离最小(最近邻)的索引: 最后,为了最小化距离函数,我们使用`arg_min`,它返回距离最小(最近邻)的索引:
```py ```py
pred = tf.arg_min(distance, 0) pred = tf.arg_min(distance, 0)
...@@ -584,7 +584,7 @@ k-means 是最常见和最简单的*聚类算法*之一,它可以根据对象 ...@@ -584,7 +584,7 @@ k-means 是最常见和最简单的*聚类算法*之一,它可以根据对象
4. 重新计算每个群集的质心。 4. 重新计算每个群集的质心。
5. 直到质心不变。 5. 直到质心不变。
k 均值的流行来自其*收敛速度*和其*易于实现。* 就解决方案的质量而言,该算法不能保证实现全局最优。 最终解决方案*的质量在很大程度上取决于*集群的*初始集*,并且在实践中可能会获得更差的全局最优解。 由于该算法非常快,因此您可以多次应用它,并提供解决方案,您可以从中选择最满意的一种。 该算法的另一个缺点是,它要求您选择要查找的簇数(k)。 k 均值的流行来自其*收敛速度*和其*易于实现*。 就解决方案的质量而言,该算法不能保证实现全局最优。 最终解决方案的质量在很大程度上取决于集群的*初始集*,并且在实践中可能会获得更差的全局最优解。 由于该算法非常快,因此您可以多次应用它,并提供解决方案,您可以从中选择最满意的一种。 该算法的另一个缺点是,它要求您选择要查找的簇数(`k`)。
如果数据不是自然分区的,您将最终得到奇怪的结果。 此外,该算法仅在数据中存在可识别的球形簇时才有效。 如果数据不是自然分区的,您将最终得到奇怪的结果。 此外,该算法仅在数据中存在可识别的球形簇时才有效。
...@@ -900,7 +900,7 @@ plt.show() ...@@ -900,7 +900,7 @@ plt.show()
# 摘要 # 摘要
在本章中,我们开始探索 TensorFlow 在机器学习中一些典型问题的潜力。 使用*线性回归*算法,解释了*成本函数*和使用*梯度下降*进行优化的重要概念。 然后,我们描述了手写数字的数据集 MNIST。 我们还使用*最近邻*算法实现了多类分类器,该分类器属于机器学习*监督学习*类别。 然后,本章以实现数据聚类问题的 k-means 算法为例,以*无监督学习*为例。 在本章中,我们开始探索 TensorFlow 在机器学习中一些典型问题的潜力。 使用*线性回归*算法,解释了*成本函数*和使用*梯度下降*进行优化的重要概念。 然后,我们描述了手写数字的数据集 MNIST。 我们还使用*最近邻*算法实现了多类分类器,该分类器属于机器学习*监督学习*类别。 然后,本章以实现数据聚类问题的 k-means 算法为例,以*无监督学习*为例。
在下一章中,我们将介绍神经网络。 这些是代表定义为*人工神经元*的元素之间相互联系的数学模型,即模仿活神经元特性的数学构造。 在下一章中,我们将介绍神经网络。 这些是代表定义为*人工神经元*的元素之间相互联系的数学模型,即模仿活神经元特性的数学构造。
......
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
在本章中,我们将介绍以下主题: 在本章中,我们将介绍以下主题:
* 什么是神经网络? * 什么是神经网络?
* 单层感知 * 单层感知
* 逻辑回归 * 逻辑回归
* 多层感知 * 多层感知
* 多层感知分类 * 多层感知分类
* 多层感知功能逼近 * 多层感知功能逼近
# 什么是人工神经网络? # 什么是人工神经网络?
...@@ -21,17 +21,17 @@ ANN 原理图 ...@@ -21,17 +21,17 @@ ANN 原理图
## 神经网络架构 ## 神经网络架构
连接节点的*方式,*总层数*,即输入和输出之间的节点级别以及每层神经元的数量-所有这些都定义了 *神经网络的架构*。 例如,在**多层网络**中(我们将在本章的第二部分中介绍这些网络),可以识别层的人工神经元,使得:* 连接节点的方式,*总层数*,即输入和输出之间的节点级别,以及每层神经元的数量-所有这些都定义了*神经网络的架构*。 例如,在**多层网络**中(我们将在本章的第二部分中介绍这些网络),可以识别层的人工神经元,使得:
* 每个神经元都与下一层的所有神经元相连 * 每个神经元都与下一层的所有神经元相连
* 属于同一层的神经元之间没有连接 * 属于同一层的神经元之间没有连接
* 层数和每层神经元的数量取决于要解决的问题 * 层数和每层神经元的数量取决于要解决的问题
现在,我们开始探索神经网络模型,介绍最简单的神经网络模型:单层感知器或所谓的罗森布拉特感知器 现在,我们开始探索神经网络模型,介绍最简单的神经网络模型:单层感知机或所谓的罗森布拉特感知机
# 单层感知 # 单层感知
单层感知是第一个神经网络模型,由 Frank Rosenblatt 于 1958 年提出。 在此模型中,神经元局部记忆的内容由权重向量`W = (w1, w2,......, wn)`组成。 该计算是在计算输入向量`X =(x1, x2,......, xn)`的总和之后执行的,每个输入向量均与权重向量的相应元素相乘; 那么输出中提供的值(即加权总和)将是激活函数的输入。 如果结果大于某个阈值,则此函数返回`1`,否则返回`-1`。 在下图中,激活功能是所谓的`sign`功能: 单层感知是第一个神经网络模型,由 Frank Rosenblatt 于 1958 年提出。 在此模型中,神经元局部记忆的内容由权重向量`W = (w1, w2,......, wn)`组成。 该计算是在计算输入向量`X =(x1, x2,......, xn)`的总和之后执行的,每个输入向量均与权重向量的相应元素相乘; 那么输出中提供的值(即加权总和)将是激活函数的输入。 如果结果大于某个阈值,则此函数返回`1`,否则返回`-1`。 在下图中,激活功能是所谓的`sign`功能:
```py ```py
+1 x > 0 +1 x > 0
...@@ -40,23 +40,23 @@ sign(x)= ...@@ -40,23 +40,23 @@ sign(x)=
``` ```
可以使用其他激活函数,最好是非线性激活函数(例如`sigmoid`函数,我们将在下一部分中看到)。 网络的学习过程是迭代的:通过使用称为训练集的选定集,可以为每个学习周期(称为时期)稍微修改突触权重。 在每个循环中,必须修改权重以最小化成本函数,该成本函数特定于所考虑的问题。 最后,当感知已在训练集上进行训练后,将在其他输入(测试集)上对其进行测试,以验证其概括能力。 可以使用其他激活函数,最好是非线性激活函数(例如`sigmoid`函数,我们将在下一部分中看到)。 网络的学习过程是迭代的:通过使用称为训练集的选定集,可以为每个学习周期(称为时期)稍微修改突触权重。 在每个循环中,必须修改权重以最小化成本函数,该成本函数特定于所考虑的问题。 最后,当感知已在训练集上进行训练后,将在其他输入(测试集)上对其进行测试,以验证其概括能力。
![Single Layer Perceptron](img/B05474_04_02.jpg) ![Single Layer Perceptron](img/B05474_04_02.jpg)
Rosemblatt 的感知架构 Rosemblatt 的感知架构
现在让我们看看如何使用 TensorFlow 对图像分类问题实现单层神经网络。 现在让我们看看如何使用 TensorFlow 对图像分类问题实现单层神经网络。
# 逻辑回归 # 逻辑回归
该算法与我们在[第 3 章](../Text/ch03.html "Chapter 3\. Starting with Machine Learning")*从机器学习*开始看到的规范线性回归无关,但是它是允许我们解决监督分类问题的算法。 实际上,为了估计因变量,现在我们利用所谓的逻辑函数或 S 形。 正是由于这个功能,我们将此算法称为逻辑回归。 乙状结肠功能具有以下模式: 该算法与我们在第 3 章“机器学习入门”开始看到的规范线性回归无关,但是它是允许我们解决监督分类问题的算法。 实际上,为了估计因变量,现在我们利用所谓的逻辑函数或 S 形。 正是由于这个功能,我们将此算法称为逻辑回归。 乙状结肠功能具有以下模式:
![The logistic regression](img/B05474_04_03.jpg) ![The logistic regression](img/B05474_04_03.jpg)
乙状结肠功能 乙状结肠功能
如我们所见,因变量的取值严格在`0``1`之间,这正是为我们服务的内容。 对于*逻辑回归*,我们希望我们的函数告诉我们属于我们班级某个特定元素的*概率*是多少。 我们再次记得,通过神经网络对*监督的*学习被配置为权重优化的*迭代过程; 然后根据训练集的网络性能对它们进行修改。 实际上,其目标是使*损失函数*最小化,该函数表明网络行为偏离所需行为的程度。 然后,在*测试集*上验证网络的性能,该测试集由除受过训练的图像以外的其他图像组成。* 如我们所见,因变量的取值严格在`0``1`之间,这正是为我们服务的内容。 对于*逻辑回归*,我们希望我们的函数告诉我们属于我们班级某个特定元素的*概率*是多少。 我们再次记得,通过神经网络对*监督*学习被配置为权重优化的*迭代过程*; 然后根据训练集的网络性能对它们进行修改。 实际上,其目标是使*损失函数*最小化,该函数表明网络行为偏离所需行为的程度。 然后,在*测试集*上验证网络的性能,该测试集由除受过训练的图像以外的其他图像组成。
我们将要实施的培训的基本步骤如下: 我们将要实施的培训的基本步骤如下:
...@@ -64,7 +64,7 @@ Rosemblatt 的感知器架构 ...@@ -64,7 +64,7 @@ Rosemblatt 的感知器架构
* 对于训练集的每个元素,都会计算*误差*,即期望输出与实际输出之间的差。 此错误用于调整权重。 * 对于训练集的每个元素,都会计算*误差*,即期望输出与实际输出之间的差。 此错误用于调整权重。
* 重复该过程,以随机顺序将训练集的所有示例重新提交给网络,直到整个训练集上的错误不小于某个阈值,或者直到达到最大迭代次数为止。 * 重复该过程,以随机顺序将训练集的所有示例重新提交给网络,直到整个训练集上的错误不小于某个阈值,或者直到达到最大迭代次数为止。
现在让我们详细了解如何使用 TensorFlow 实现逻辑回归。 我们要解决的问题是对来自 MNIST 数据集的图像进行分类,如[第 3 章](../Text/ch03.html "Chapter 3\. Starting with Machine Learning")*从机器学习开始的说明*手写数字的数据库。 现在让我们详细了解如何使用 TensorFlow 实现逻辑回归。 我们要解决的问题是对来自 MNIST 数据集的图像进行分类,如第 3 章,“机器学习入门”中的手写数字的数据库。
## TensorFlow 实施 ## TensorFlow 实施
...@@ -79,7 +79,7 @@ Rosemblatt 的感知器架构 ...@@ -79,7 +79,7 @@ Rosemblatt 的感知器架构
``` ```
2. 我们使用[第 3 章](../Text/ch03.html "Chapter 3\. Starting with Machine Learning")*从机器学习*开始引入的 *MNIST 数据集*部分中的`input_data.read`函数,将图像上传到我们的问题中: 2. 我们使用第 3 章“机器学习入门”引入的 *MNIST 数据集*部分中的`input_data.read`函数,将图像上传到我们的问题中:
```py ```py
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True) mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
...@@ -429,9 +429,9 @@ with tf.Session() as sess: ...@@ -429,9 +429,9 @@ with tf.Session() as sess:
``` ```
# 多层感知 # 多层感知
更复杂和有效的体系结构是**多层感知器****MLP**)。 它基本上由多层感知器组成,因此至少存在*个隐藏的* *层*,即**未连接到输入或连接到** 网络的输出 更复杂和有效的体系结构是**多层感知机****MLP**)。 它基本上由多层感知机组成,因此至少存在*隐藏的层*,即**未连接到网络的输入或输出**
![Multi Layer Perceptron](img/B05474_04_05.jpg) ![Multi Layer Perceptron](img/B05474_04_05.jpg)
...@@ -447,7 +447,7 @@ MLP 架构 ...@@ -447,7 +447,7 @@ MLP 架构
在以下示例中,我们显示了针对图像分类问题(MNIST)的 MLP 实现。 在以下示例中,我们显示了针对图像分类问题(MNIST)的 MLP 实现。
## 多层感知分类 ## 多层感知分类
导入必要的库: 导入必要的库:
...@@ -521,8 +521,8 @@ n_classes = 10 ...@@ -521,8 +521,8 @@ n_classes = 10
每个选择都必须基于类似应用程序的经验,例如: 每个选择都必须基于类似应用程序的经验,例如:
* 当增加隐藏层的数量时,我们还应该在学习阶段增加必要的训练集的大小,并增加要更新的连接数。 这导致训练时间*增加* * 当增加隐藏层的数量时,我们还应该在学习阶段增加必要的训练集的大小,并增加要更新的连接数。 这导致训练时间*增加*
* 另外,如果隐藏层中的神经元太多,不仅有更多的权重需要更新,而且网络还倾向于从训练示例集中学习太多,从而导致*的泛化性很差* 能力。 但是,如果隐藏的神经元太少,即使使用训练集,网络*也无法学习* * 另外,如果隐藏层中的神经元太多,不仅有更多的权重需要更新,而且网络还倾向于从训练示例集中学习太多,从而导致*泛化能力很差*。 但是,如果隐藏的神经元太少,即使使用训练集,网络*也无法学习*
### 建立模型 ### 建立模型
...@@ -561,7 +561,7 @@ layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x,h),bias_layer_1)) ...@@ -561,7 +561,7 @@ layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x,h),bias_layer_1))
``` ```
它通过`activation`函数将其输出发送到下一层的神经元。 必须说,每个神经元的功能可能不同,但是在实践中,我们对所有神经元(通常为 S 型)采用一个共同的特征。 有时输出神经元具有线性激活功能。 有趣的是,隐藏层中神经元的激活函数不能是线性的,因为在这种情况下,MLP 网络将等效于具有两层的网络,因此不再是 MLP 类型。 第二层必须执行与第一相同的步骤*。* 它通过`activation`函数将其输出发送到下一层的神经元。 必须说,每个神经元的功能可能不同,但是在实践中,我们对所有神经元(通常为 S 型)采用一个共同的特征。 有时输出神经元具有线性激活功能。 有趣的是,隐藏层中神经元的激活函数不能是线性的,因为在这种情况下,MLP 网络将等效于具有两层的网络,因此不再是 MLP 类型。 第二层必须执行与第一相同的步骤
第二中间层由权重张量`[256 × 256]`的形状表示: 第二中间层由权重张量`[256 × 256]`的形状表示:
...@@ -755,7 +755,7 @@ TensorFlow 提供了优化器基类来计算损失的梯度并将梯度应用于 ...@@ -755,7 +755,7 @@ TensorFlow 提供了优化器基类来计算损失的梯度并将梯度应用于
![Launch the session](img/B05474_04_06.jpg) ![Launch the session](img/B05474_04_06.jpg)
多层感知的训练阶段 多层感知的训练阶段
### 源代码 ### 源代码
...@@ -844,7 +844,7 @@ with tf.Session() as sess: ...@@ -844,7 +844,7 @@ with tf.Session() as sess:
``` ```
## 多层感知功能逼近 ## 多层感知功能逼近
在以下示例中,我们实现了一个 MLP 网络,该网络将能够学习任意函数`f (x)`的趋势。 在训练阶段,网络将必须从一组已知点中学习`x``f (x)`,而在测试阶段,网络将仅从`x`值中扣除`f (x)`的值。 在以下示例中,我们实现了一个 MLP 网络,该网络将能够学习任意函数`f (x)`的趋势。 在训练阶段,网络将必须从一组已知点中学习`x``f (x)`,而在测试阶段,网络将仅从`x`值中扣除`f (x)`的值。
...@@ -1061,10 +1061,10 @@ plt.show() ...@@ -1061,10 +1061,10 @@ plt.show()
![Launch the session](img/B05474_04_08.jpg) ![Launch the session](img/B05474_04_08.jpg)
多层感知的训练阶段 多层感知的训练阶段
# 摘要 # 摘要
在本章中,我们介绍了*人工神经网络*。 人工神经元是一种数学模型,在某种程度上模仿了活神经元的特性。 网络的每个神经元都有一个非常简单的操作,包括接收到的信号总量超过激活阈值时变为活动状态。 学习过程通常是*监督的*:神经网络使用训练集来推断输入和相应输出之间的关系,而学习算法会修改网络的权重以使*最小化 表示与*训练集*有关的*预测误差*的成本函数*。 如果训练成功,则即使事先不知道输出结果,神经网络也将能够做出预测。 在本章中,我们使用 TensorFlow 实现了一些涉及神经网络的示例。 在使用 *Rosemblatt's Perceptron* 进行分类的问题中,我们已经看到神经网络作为 *logistic 回归*算法来解决分类和回归问题。 在本章的最后,我们介绍了*多层感知器*架构,在实现*图像分类器*之前,然后是*仿真器的实现中,我们已经看到了该架构的实际应用。 数学函数* 在本章中,我们介绍了*人工神经网络*。 人工神经元是一种数学模型,在某种程度上模仿了活神经元的特性。 网络的每个神经元都有一个非常简单的操作,包括接收到的信号总量超过激活阈值时变为活动状态。 学习过程通常是*监督的*:神经网络使用训练集来推断输入和相应输出之间的关系,而学习算法会修改网络的权重以使成本函数*最小化*,它表示*训练集*有关的*预测误差*。 如果训练成功,则即使事先不知道输出结果,神经网络也将能够做出预测。 在本章中,我们使用 TensorFlow 实现了一些涉及神经网络的示例。 在使用 *Rosemblatt 的感知机*进行分类的问题中,我们已经看到神经网络作为*逻辑回归*算法来解决分类和回归问题。 在本章的最后,在实现*图像分类器*之前,我们介绍了*多层感知机*架构,然后在*数学函数仿真器*的实现中,我们已经看到了该架构的实际应用
在下一章中,我们最后介绍深度学习模型; 我们将研究和实现更复杂的神经网络架构,例如卷积神经网络和递归神经网络。** 在下一章中,我们最后介绍深度学习模型; 我们将研究和实现更复杂的神经网络架构,例如卷积神经网络和递归神经网络。
\ No newline at end of file \ No newline at end of file
...@@ -358,7 +358,7 @@ pred = tf.add(tf.matmul(dense1, wout), bout) ...@@ -358,7 +358,7 @@ pred = tf.add(tf.matmul(dense1, wout), bout)
#### 测试和训练模型 #### 测试和训练模型
必须将证据转换为 10 种可能类别中每一种的概率(该方法与我们在[第 4 章](../Text/ch04.html "Chapter 4\. Introducing Neural Networks")*神经网络介绍*中看到的方法相同)。 因此,我们定义了成本函数,该函数通过应用`softmax`函数来评估模型的质量: 必须将证据转换为 10 种可能类别中每一种的概率(该方法与我们在第 4 章*神经网络介绍*中看到的方法相同)。 因此,我们定义了成本函数,该函数通过应用`softmax`函数来评估模型的质量:
```py ```py
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y)) cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
# GPU 编程 # GPU 编程
[第 5 章](../Text/ch05.html "Chapter 5\. Deep Learning")*深度学习*中,我们针对 NLP 应用训练了**递归神经网络****RNN**), 深度学习应用程序可能需要大量计算。 但是,您可以通过**图形处理单元****GPU**)使用并行编程技术来减少训练时间。 实际上,现代图形单元的计算资源使它们能够执行并行代码部分,从而确保了高性能。 第 5 章*深度学习*中,我们针对 NLP 应用训练了**递归神经网络****RNN**), 深度学习应用程序可能需要大量计算。 但是,您可以通过**图形处理单元****GPU**)使用并行编程技术来减少训练时间。 实际上,现代图形单元的计算资源使它们能够执行并行代码部分,从而确保了高性能。
GPU 编程模型是一种编程策略,包括将 CPU 替换为 GPU 以加速各种应用程序的执行。 该策略的应用范围非常广泛,并且每天都在增长。 目前,GPU 能够减少跨平台(从汽车到手机,从平板电脑到无人机和机器人)的应用程序执行时间。 GPU 编程模型是一种编程策略,包括将 CPU 替换为 GPU 以加速各种应用程序的执行。 该策略的应用范围非常广泛,并且每天都在增长。 目前,GPU 能够减少跨平台(从汽车到手机,从平板电脑到无人机和机器人)的应用程序执行时间。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册