提交 84387f8d 编写于 作者: W wizardforcel

2021-01-02 21:22:00

上级 5b099192
......@@ -51,9 +51,9 @@
估计参数的分布等效于参数的最大后验估计(MAP):
*w = argma`x[w]`logP(w | x,y)*
`w = argmax[w] logP(w | x, y)`
根据贝叶斯规则,可以如下计算`P`*w | x,y*
根据贝叶斯规则,可以如下计算`P(w | x, y)`
![](img/5affc32a-36a8-49bd-b78c-86bbbb9fd3ec.png)
......@@ -118,9 +118,9 @@ pip install edward
由于模型的参数是与单个值相反的分布,因此输出也应具有分布-特别是分类分布。
6. 如前所述,我们使用变分推断来近似`w``b`的后验。 我们建立了近似分布 *Q(w)**Q(b)*,它们将被优化以匹配`w``b`。 两组分布之间的差异通过 **Kullback-Leibler****KL**)散度来衡量,我们尝试将其最小化。
6. 如前所述,我们使用变分推断来近似`w``b`的后验。 我们建立了近似分布`Q(w)``Q(b)`,它们将被优化以匹配`w``b`。 两组分布之间的差异通过 **Kullback-Leibler****KL**)散度来衡量,我们尝试将其最小化。
同样,近似分布 *Q(w)**Q(b)*也是高斯分布,但初始位置随机:
同样,近似分布`Q(w)``Q(b)`也是高斯分布,但初始位置随机:
```py
>>> qw = Normal(loc=tf.Variable(tf.random_normal(
......@@ -176,7 +176,7 @@ pip install edward
... inference.update(feed_dict={x: X_batch, y_ph: Y_batch})
```
10. 训练完成后,我们在测试集上评估模型(优化的近似分布 *Q(w)**Q(b)*)。 因为它们是分布,所以我们可以对`w``b`的各种集合进行采样,并计算相应的预测。 我们训练样本 30 次,但总的来说,训练越多越好:
10. 训练完成后,我们在测试集上评估模型(优化的近似分布`Q(w)``Q(b)`)。 因为它们是分布,所以我们可以对`w``b`的各种集合进行采样,并计算相应的预测。 我们训练样本 30 次,但总的来说,训练越多越好:
```py
>>> n_samples = 30
......@@ -390,7 +390,7 @@ The predictions for the notMNIST example are: [2.0, 5.0, 2.0, 2.0, 2.0, 2.0, 2.0
元学习有许多不同的方法,因为*元学习*仍然是一个宽松术语,是一个相对较新的概念。 最受欢迎的包括:
* **基于模型学习的元学习**:这是一个顺序模型,只需几个步骤即可更新其参数。 可以在**记忆增强神经网络****MANN**)中找到典型的模型学习体系结构,如下图所示,其外观与 RNN 相似。 在 MANN 中,模型的最后一步将提取要预测的样本。 在此之前,每个步骤都需要获取训练样本,并且样本的标签会在上一步中输入。 有了这种显式的存储缓冲区(也称为**一步偏移**),网络就可以记住学习经验,而不仅仅是从特征到标签的简单映射。 而且,由于我们可以通过随机选择不同的训练数据点*(X,Y)*并按顺序排列它们来轻松生成大量的训练案例,因此不必担心这种训练规模的限制。 下图描述了一个基于模型的元学习示例:
* **基于模型学习的元学习**:这是一个顺序模型,只需几个步骤即可更新其参数。 可以在**记忆增强神经网络****MANN**)中找到典型的模型学习体系结构,如下图所示,其外观与 RNN 相似。 在 MANN 中,模型的最后一步将提取要预测的样本。 在此之前,每个步骤都需要获取训练样本,并且样本的标签会在上一步中输入。 有了这种显式的存储缓冲区(也称为**一步偏移**),网络就可以记住学习经验,而不仅仅是从特征到标签的简单映射。 而且,由于我们可以通过随机选择不同的训练数据点`(X, Y)`并按顺序排列它们来轻松生成大量的训练案例,因此不必担心这种训练规模的限制。 下图描述了一个基于模型的元学习示例:
![](img/b2ed9d8e-785f-4d89-802d-2ba4d47c6d1d.png)
......@@ -458,7 +458,7 @@ pip install Pillow
![](img/e4c66ce4-5f27-4ca5-891a-14c2a278b132.png)
给定来自未知主题的图像,我们将其分别与来自三个主题的每个图像进行比较(假设系统中只有三个主题)。 我们将每对图像馈送到暹罗神经网络并获得概率分数。 具有对象 1 的图像的图像对获得最高概率。 因此,查询图像很可能来自主题 1。使用这种策略,我们将能够从 400 张图像中生成更多的训练样本(或者具体来说,是成对的),以适合暹罗神经网络。 。 例如,我们最多可以为每个主题创建 10 * 9/2 = 45 个唯一阳性对,或者对于所有 40 个主题总共创建 45 * 40 = 1800 个唯一阳性对。 类似地,我们可以为每对主题形成 10 * 10 = 100 个唯一的阴性对,或者对于所有可能的主题对总共形成 100 *(40 * 39/2)= 78,000 个唯一的阴性对。 最后,我们可以获得数百个训练样本,这确实提高了人脸识别性能。
给定来自未知主题的图像,我们将其分别与来自三个主题的每个图像进行比较(假设系统中只有三个主题)。 我们将每对图像馈送到暹罗神经网络并获得概率分数。 具有对象 1 的图像的图像对获得最高概率。 因此,查询图像很可能来自主题 1。使用这种策略,我们将能够从 400 张图像中生成更多的训练样本(或者具体来说,是成对的),以适合暹罗神经网络。 。 例如,我们最多可以为每个主题创建 10 * 9/2 = 45 个唯一阳性对,或者对于所有 40 个主题总共创建`45 * 40 = 1800`个唯一阳性对。 类似地,我们可以为每对主题形成`10 * 10 = 100`个唯一的阴性对,或者对于所有可能的主题对总共形成`100 * (40 * 39/2) = 78,000`个唯一的阴性对。 最后,我们可以获得数百个训练样本,这确实提高了人脸识别性能。
现在,让我们通过执行以下步骤在 Keras 中构建暹罗神经网络:
......@@ -579,7 +579,7 @@ Epoch 10/10
7200/7200 [==============================] - 58s 8ms/step - loss: 0.1215 - val_loss: 0.1736
```
训练和验证损失看起来都不错,但是我们仍然需要在真实环境中进行测试。 假设有`n`个受试者,则在一个测试用例中将有`n`个样本。 在这些 *n 个*样本中,一个样本是地面真实对,由查询图像和同一主题的图像组成; 其他`n`-1 个样本由查询图像和其他主题的图像组成。 例如,假设我们有四个主题,`A``B``C`*D,*及其图像`a``b`*c,*`d`。 给定未知图像`x`,一个测试案例可以是 *[x,a]**[x,b]**[x,c]**[x,d]* 。 在元学习中,给定`n`唯一类,这样的任务称为**四路学习****n 路学习**
训练和验证损失看起来都不错,但是我们仍然需要在真实环境中进行测试。 假设有`n`个受试者,则在一个测试用例中将有`n`个样本。 在这些`n`个样本中,一个样本是地面真实对,由查询图像和同一主题的图像组成; 其他`n-1`个样本由查询图像和其他主题的图像组成。 例如,假设我们有四个主题,`A`,`B`,`C`和`D`,及其图像`a`,`b`,`c`和`d`。 给定未知图像`x`,一个测试案例可以是`[x, a]`,`[x, b]`,`[x, c]`和`[x, d]`。 在元学习中,给定`n`唯一类,这样的任务称为**四路学习**或 **n 路学习**。
首先,让我们定义一个生成测试用例的函数:
......
......@@ -6,4 +6,4 @@
* “第 1 章”,“深度学习入门”
* “第 2 章”,“深度前馈网络”
* “第 3 章”,*受限制的 Boltzmann 机器和自编码器*
\ No newline at end of file
* “第 3 章”,“受限制的 Boltzmann 机器和自编码器”
\ No newline at end of file
......@@ -24,11 +24,11 @@
“第 5 章”,“通过 API 进行深度学习”介绍 API 的概念及其在软件开发中的重要性。 此外,本章将继续展示不同深度学习 API 的示例。 最后,本章介绍了一种选择深度学习 API 提供程序以适合特定用例的方法。 涵盖的深度学习 API 是 Vision API,Text API 等。
“第 6 章”,*使用 Python* 在 Google Cloud Platform 上进行深度学习,介绍了 Google Cloud Platform 为 Web 开发人员提供的集成到他们的网站中的产品。 重点是 Dialogflow,它可用于制作聊天机器人和对话式 AI。 Cloud Inference API,可用于构建良好的推荐系统; 以及 Translation API,该 API 用于为不同地区的用户提供其语言的网站内容。 本章详细讨论了它们的应用程序,还演示了将其与 Python 一起使用的基本方法。
“第 6 章”,“使用 Python 在 Google Cloud Platform 上进行深度学习”,介绍了 Google Cloud Platform 为 Web 开发人员提供的集成到他们的网站中的产品。 重点是 Dialogflow,它可用于制作聊天机器人和对话式 AI。 Cloud Inference API,可用于构建良好的推荐系统; 以及 Translation API,该 API 用于为不同地区的用户提供其语言的网站内容。 本章详细讨论了它们的应用程序,还演示了将其与 Python 一起使用的基本方法。
“第 7 章”,*在 AWS 上使用 Python 的 DL:对象检测和家庭自动化*介绍了 Amazon Web Services,并简要介绍了各种产品,包括 Alexa API 和 Rekognition API。 Alexa API 可用于构建家庭自动化 Web 应用程序和其他交互式界面,而 Rekognition API 可用于检测照片和视频中的人和物体。
“第 7 章”,“在 AWS 上使用 Python 的 DL:对象检测和家庭自动化”介绍了 Amazon Web Services,并简要介绍了各种产品,包括 Alexa API 和 Rekognition API。 Alexa API 可用于构建家庭自动化 Web 应用程序和其他交互式界面,而 Rekognition API 可用于检测照片和视频中的人和物体。
“第 8 章”,*使用 Python* 在 Microsoft Azure 上进行深度学习,介绍了 Microsoft Azure 云服务,重点介绍了认知工具包,该工具包是 Microsoft 替代 TensorFlow 的 Emotion API 的工具,可用于确定 一个人的面部照片所产生的情感以及 Text-to-Speech API(可用于从文本中产生听起来自然的声音)。
“第 8 章”,“使用 Python 在 Microsoft Azure 上进行深度学习”,介绍了 Microsoft Azure 云服务,重点介绍了认知工具包,该工具包是 Microsoft 替代 TensorFlow 的 Emotion API 的工具,可用于确定 一个人的面部照片所产生的情感以及 Text-to-Speech API(可用于从文本中产生听起来自然的声音)。
“第 9 章”,“启用深度学习的网站的通用生产框架”介绍了要建立的通用框架,以在生产环境中在网络上有效部署深度学习。 涵盖了减少计算资源,将原始数据集转换为用于训练深度学习模型的数据集以及如何以最小的资源密集型方式使模型可用于网络上使用的策略。
......@@ -36,9 +36,9 @@
“第 11 章”,“DIY – Web DL 生产环境”讨论了在生产中更新模型的方法以及如何根据需求选择正确的方法。 我们从简要概述开始,然后演示一些用于创建深度学习数据流的著名工具。 最后,我们实现在线学习或增量学习的演示,以建立生产中模型更新的方法。
“第 12 章”,*使用 DL API 和客户支持聊天机器人创建 E2E Web 应用程序*介绍自然语言处理,并讨论如何创建聊天机器人以使用 Dialogflow 解决一般客户支持查询并将其集成 进入 Django 和 Flask 网站。 我们探索实现机器人个性的方法以及如何使这种系统资源有效。 我们还介绍了一种使用 Python 实现基于文本到语音和基于语音到文本的用户界面的方法。
“第 12 章”,“使用 DL API 和客户支持聊天机器人创建 E2E Web 应用程序”介绍自然语言处理,并讨论如何创建聊天机器人以使用 Dialogflow 解决一般客户支持查询并将其集成 进入 Django 和 Flask 网站。 我们探索实现机器人个性的方法以及如何使这种系统资源有效。 我们还介绍了一种使用 Python 实现基于文本到语音和基于语音到文本的用户界面的方法。
[附录](../Text/13.html)*网络上深度学习的成功案例和新兴领域*举例说明了一些最著名的网站,这些网站的产品很大程度上依赖于利用深度学习的力量。 本章还讨论了可以通过深度学习得到增强的 Web 开发中的一些关键研究领域。 这将帮助您更深入地研究 Web 技术和深度学习的融合,并激发您提出自己的智能 Web 应用程序。
附录,“网络上深度学习的成功案例和新兴领域”举例说明了一些最著名的网站,这些网站的产品很大程度上依赖于利用深度学习的力量。 本章还讨论了可以通过深度学习得到增强的 Web 开发中的一些关键研究领域。 这将帮助您更深入地研究 Web 技术和深度学习的融合,并激发您提出自己的智能 Web 应用程序。
# 充分利用这本书
......
......@@ -7,7 +7,7 @@
随着我们步入软件 2.0 时代,了解为什么自 1950 年代以来就存在的一项技术成为当今大多数新闻的头等重要。 是! 人工智能诞生于 1950 年代,当时诸如 **Alan Turing** 之类的少数计算机科学家和数学家开始思考机器是否可以思考以及是否可以通过智能获得支持,以便他们可以自己回答问题 无需明确编程。
自成立以来不久,**人工智能**一词由 **John McCarthy** 在 1956 年的一次学术会议上首次提出。 从问题“ **机器可以思考吗?**”(由 Turing 在他的论文中提出,题目为*计算机械和智能*),直到 1950 年第 21 天 二十世纪,人工智能世界已经展现了一些我们从未想过的前所未有的成果。
自成立以来不久,**人工智能**一词由 **John McCarthy** 在 1956 年的一次学术会议上首次提出。 从问题“ **机器可以思考吗?**”(由 Turing 在他的论文中提出,题目为《计算机械和智能》),直到 1950 年第 21 天 二十世纪,人工智能世界已经展现了一些我们从未想过的前所未有的成果。
今天,如果不使用**网络,几乎不可能想到一天。** 它已轻松成为我们的基本必需品之一。 我们最喜欢的搜索引擎可以直接回答我们的问题,而不是向我们提供相关链接的列表。 他们可以分析在线文本并检测其意图并总结其内容。 由于 AI,所有这些都是可能的。
......@@ -96,9 +96,9 @@ AI 试图通过赋予我们一些规则来综合我们所谓的*智能*并将其
# ML-最受欢迎的 AI 形式
在不采用任何数学符号或太多理论细节的情况下,让我们尝试从直观的角度使用术语**机器学习****ML**)。 为此,我们将不得不看看我们如何实际学习。 当在学校被教导要识别句子中的词性时,您是否还记得学校? 我们得到了一套识别句子中演讲部分的规则。 我们给了很多例子,我们的老师首先为我们识别了*句子中的语音部分,以便有效地训练*我们,以便我们可以利用这种学习经验来识别句子中的语音部分, 没有被教给我们。 而且,该学习过程从根本上适用于我们学习的任何内容。
在不采用任何数学符号或太多理论细节的情况下,让我们尝试从直观的角度使用术语**机器学习****ML**)。 为此,我们将不得不看看我们如何实际学习。 当在学校被教导要识别句子中的词性时,您是否还记得学校? 我们得到了一套识别句子中演讲部分的规则。 我们给了很多例子,我们的老师首先为我们识别了句子中的语音部分来有效地*训练*我们,以便我们可以利用这种学习经验来识别句子中的语音部分, 没有被教给我们。 而且,该学习过程从根本上适用于我们学习的任何内容。
如果我们可以类似地训练机器怎么办? 如果我们可以对他们进行编程,使他们可以从经验中学习并可以根据这些知识开始回答问题,该怎么办? 嗯,这已经完成了,并且,无论是有意还是无意,我们所有人都在从中受益。 而这正是直觉上讨论 ML 的意义。 为了更正式,更标准的理解,让我们看一下汤姆·米切尔(Tom Mitchell)在他的书 *Machine Learning* 中的以下定义:
如果我们可以类似地训练机器怎么办? 如果我们可以对他们进行编程,使他们可以从经验中学习并可以根据这些知识开始回答问题,该怎么办? 嗯,这已经完成了,并且,无论是有意还是无意,我们所有人都在从中受益。 而这正是直觉上讨论 ML 的意义。 为了更正式,更标准的理解,让我们看一下汤姆·米切尔(Tom Mitchell)在他的书《机器学习》中的以下定义:
“如果某个计算机程序在 T 上的性能(由 P 衡量)随着经验 E 的提高而改善,那么据说它可以从经验 E 中学习一些任务 T 和一些性能度量 P。”
......@@ -108,13 +108,13 @@ AI 试图通过赋予我们一些规则来综合我们所谓的*智能*并将其
# 什么是 DL?
现在是本世纪最令人兴奋的部分,并且可能是本世纪最热门的技术术语。 分开现实,我们现在在某种程度上理解了**学习**,因此让我们进入术语*深度学习*- **deep** 的第一部分。
现在是本世纪最令人兴奋的部分,并且可能是本世纪最热门的技术术语。 分开现实,我们现在在某种程度上理解了**学习**,因此让我们进入术语*深度学习* -- **深度**的第一部分。
DL 是一种机器学习,但它完全基于**神经网络**。 我们还将在下一章中介绍神经网络。 任何机器学习系统的基本目标都是*学习提供给它的数据*的有用表示。 但是,什么使 DL 与众不同? 事实证明,DL 系统将数据视为层的表示。 例如,可以将图像视为具有不同属性(例如边缘,轮廓,方向,纹理和渐变)的层的表示。 下图来自的 *Python 深度学习*书,FrançoisChollet 很好地抓住了这个想法:
DL 是一种机器学习,但它完全基于**神经网络**。 我们还将在下一章中介绍神经网络。 任何机器学习系统的基本目标都是*学习提供给它的数据的有用表示*。 但是,什么使 DL 与众不同? 事实证明,DL 系统将数据视为层的表示。 例如,可以将图像视为具有不同属性(例如边缘,轮廓,方向,纹理和渐变)的层的表示。 下图来自的《Python 深度学习》书,FrançoisChollet 很好地抓住了这个想法:
![](img/8b22fd60-5661-44c7-b485-a00f74f9fb83.jpg)
在上图中,采用 DL 系统对手写数字图像进行分类。 系统将手写数字的图像作为输入,并尝试学习其基础表示。 在第一层中,系统学习通用特征,例如笔触和线条。 随着层数的增加,它将了解特定于给定图像的特征。 层数越多,*越深,系统获得的*越多。 让我们看一下下面的定义,它是由 FrançoisChollet 在他的书*使用 Python 进行深度学习*中给出的:
在上图中,采用 DL 系统对手写数字图像进行分类。 系统将手写数字的图像作为输入,并尝试学习其基础表示。 在第一层中,系统学习通用特征,例如笔触和线条。 随着层数的增加,它将了解特定于给定图像的特征。 层数越多,系统越深。 让我们看一下下面的定义,它是由 FrançoisChollet 在他的书《Python 深度学习》中给出的:
“深度学习中的**深度**并不是指通过这种方法实现的任何形式的更深层次的理解;它代表的是连续表示层的思想。有多少层对模型的贡献 数据称为模型的深度。在深度学习中,这些分层表示(几乎总是)是通过称为神经网络的模型来学习的,这些模型构造为彼此堆叠的文字层。
......@@ -199,7 +199,7 @@ K-均值聚类,DBSCAN 和 Apriori 算法是用于无监督学习的一些最
# 训练,测试和验证集
任何 ML 系统都将获得**数据**。 没有数据,实际上不可能设计 ML 系统。 到目前为止,我们并不担心数据的数量,但请务必记住,我们需要数据来设计 ML 系统。 有了这些数据后,我们将其用于*训练[MLG5]我们的机器学习系统,以便它们可以用于*在新数据上预测某些*(*一些*是 术语,因问题而异)。 因此,用于训练目的的数据称为**训练集**,对其进行测试的数据称为**测试集**。 同样,在将模型实际应用于测试数据之前,我们倾向于在另一组数据上验证其性能,这称为**验证集**。 有时,我们不会在这些漂亮的分区中获得数据; 我们只是以原始的无法理解的格式获取数据,我们将对其进行进一步处理并进行相应的分区。*
任何 ML 系统都将获得**数据**。 没有数据,实际上不可能设计 ML 系统。 到目前为止,我们并不担心数据的数量,但请务必记住,我们需要数据来设计 ML 系统。 有了这些数据后,我们将其用于*训练*我们的机器学习系统,以便它们可以用于在新数据上*预测*某些东西(*某些东西*是更广的项目,因问题而异)。 因此,用于训练目的的数据称为**训练集**,对其进行测试的数据称为**测试集**。 同样,在将模型实际应用于测试数据之前,我们倾向于在另一组数据上验证其性能,这称为**验证集**。 有时,我们不会在这些漂亮的分区中获得数据; 我们只是以原始的无法理解的格式获取数据,我们将对其进行进一步处理并进行相应的分区。*
从技术上讲,这三个不同集合中的所有实例都应该彼此不同,而数据中的分布应该是相同的。 如今,许多研究人员发现了关于这些假设的关键问题,并提出了**对抗训练**,之类的东西,这超出了本书的范围。
......@@ -229,7 +229,7 @@ ML 上下文中的差异涉及数据中存在的信息。 因此,高方差是
基于此讨论,我们可以得出一个非常有用的结论:过拟合的 ML 模型可能会遭受高方差问题,而欠拟合的模型可能会遭受高偏差问题。
如果没有以下图表,关于过度拟合和不足拟合的讨论仍然是不完整的(Andrew Ng 在其旗舰课程 *Machine Learning* 中显示):
如果没有以下图表,关于过度拟合和不足拟合的讨论仍然是不完整的(Andrew Ng 在其旗舰课程《机器学习》中显示):
![](img/786819b2-885e-4fa8-80bf-de2842258087.png)
......@@ -298,13 +298,13 @@ ML 上下文中的差异涉及数据中存在的信息。 因此,高方差是
重要的是要记住,特征选择和降维是不同的。
# 造型
# 建模
我们终于走到了最激动人心的一步,即 **ML 建模**部分。 但是在这里值得注意的是,一个好的机器学习项目不仅仅涉及这部分。 前面提到的所有部分均对项目标准做出了同样的贡献。 实际上,如何为项目收集数据非常重要,为此,我们得到了功能强大的数据工程师的帮助。 现在,让我们将这一部分放在一边。
到目前为止,我们已经拥有了相当不错的数据。 在数据建模过程中,我们将训练数据输入到 ML 模型中进行训练,我们监视其训练进度并调整不同的超参数,从而优化其性能,并在测试集上对模型进行评估。 *模型比较*也是此阶段的一部分。 这确实是一个*迭代*过程,并且在某种程度上涉及*反复试验*
这里的主要目的是提出一个最能代表数据的 ML 模型,即*很好地概括了*。 计算时间是我们在这里必须考虑的另一个因素,因为我们需要一个性能良好但在可行的时间范围内能够优化特定业务成果的模型。
这里的主要目的是提出一个最能代表数据的 ML 模型,即*很好地泛化*。 计算时间是我们在这里必须考虑的另一个因素,因为我们需要一个性能良好但在可行的时间范围内能够优化特定业务成果的模型。
以下是构成建模核心的部分:
......@@ -314,7 +314,7 @@ ML 上下文中的差异涉及数据中存在的信息。 因此,高方差是
# 模型训练
这是建模的基础部分,因为我们将数据介绍给不同的 ML 模型,然后**训练**模型,以便它可以全面了解数据的表示形式。 我们可以看到模型在使用*训练错误*进行训练期间的进展。 我们也经常将*验证错误*(这意味着我们同时验证模型训练)引入此图片中,这是一种标准做法。 当今大多数现代图书馆都允许我们这样做,我们将在本书的后续章节中看到它。 现在,我们将讨论一些最常用的错误指标。
这是建模的基础部分,因为我们将数据介绍给不同的 ML 模型,然后**训练**模型,以便它可以全面了解数据的表示形式。 我们可以看到模型在使用*训练误差*进行训练期间的进展。 我们也经常将*验证误差*(这意味着我们同时验证模型训练)引入此图片中,这是一种标准做法。 当今大多数现代图书馆都允许我们这样做,我们将在本书的后续章节中看到它。 现在,我们将讨论一些最常用的错误指标。
# 模型评估
......@@ -378,7 +378,7 @@ ML 模型带有不同的*超参数*,这些超参数无法从模型训练中学
要更深入地学习 ML 的基础知识,建议您阅读以下资源:[《Google 的机器学习速成课程》](https://developers.google.com/machine-learning/crash-course/)[《Python 机器学习》](https://india.packtpub.com/in/big-data-and-business-intelligence/python-machine-learning)
为了便于参考,您可以参考本书*和 Python* 的动手实践学习(Dipanjan 等人)中给出的下图,该图以图形方式描述了所有上述步骤:
为了便于参考,您可以参考本书和《Python 深度学习实践指南》(Dipanjan 等人)中给出的下图,该图以图形方式描述了所有上述步骤:
![](img/1adb3e40-cbd7-469f-8234-3002ac0d91c2.png)
......@@ -430,7 +430,7 @@ Facebook Messenger 的漫游器平台在向公众开放的前 17 个月内创建
除了少数几种,大多数垃圾邮件都在互联网上展出。 因此,至关重要的是能够过滤垃圾邮件并采取针对性措施。 虽然最早的反垃圾邮件斗争始于 1990 年代,当时它确定发送垃圾邮件的 IP 地址,但是随着黑名单的规模越来越大,黑名单的分发和维护成为一种黑名单,很快人们意识到这是一种效率很低的方法。 疼痛。
在 2000 年代初期,保罗·格雷厄姆(Paul Graham)首次发表了题为*垃圾邮件计划*的论文时,部署了一种 ML 模型(贝叶斯过滤)来对抗垃圾邮件。 不久,从纸上纺出了几种反垃圾邮件工具,并证明是有效的。
在 2000 年代初期,保罗·格雷厄姆(Paul Graham)首次发表了题为《垃圾邮件计划》的论文时,部署了一种 ML 模型(贝叶斯过滤)来对抗垃圾邮件。 不久,从纸上纺出了几种反垃圾邮件工具,并证明是有效的。
贝叶斯过滤方法对垃圾邮件的影响就是这种影响。在 2004 年的*世界经济论坛*上,微软的创始人比尔·盖茨向前说:
......@@ -501,7 +501,7 @@ Google 翻译支持 100 多种语言,可能是互联网上公开提供的最
# Google 助手
谷歌助手是谷歌的最新业务之一,是苹果 Siri 和微软 Cortana 的竞争对手,也是谷歌即时的继任者。 它是一款基于 AI 的虚拟助手,可在移动和智能家居设备(商标为 *Google Home* )上使用。 目前,它可以在用户的​​Google 云端硬盘数据上进行搜索,根据用户的偏好产生结果,提醒用户提供的注释,拨号,发送短信,以及按照用户的指示(通过常规点击- 在触摸屏上输入或通过语音输入:
谷歌助手是谷歌的最新业务之一,是苹果 Siri 和微软 Cortana 的竞争对手,也是谷歌即时的继任者。 它是一款基于 AI 的虚拟助手,可在移动和智能家居设备(商标为 *Google Home*)上使用。 目前,它可以在用户的​​Google 云端硬盘数据上进行搜索,根据用户的偏好产生结果,提醒用户提供的注释,拨号,发送短信,以及按照用户的指示(通过常规点击- 在触摸屏上输入或通过语音输入:
![](img/02c4611b-f44d-47af-8ba3-932197617f70.jpeg)
......
......@@ -26,9 +26,9 @@
总而言之,神经元从其他神经元接收输入的总和,将该总和与阈值进行比较,并相应地激活神经元。 **人工神经网络****ANN**),或简称为**神经网络****NN**),因此, 相似。
那么,是什么使网络成为*神经*神经网络呢? 形成 NN 需要什么?
那么,是什么使网络成为*神经网络*呢? 形成 NN 需要什么?
以下来自 Adrian Rosebrock 的书*用 Python 进行计算机视觉的深度学习*中的引言以一种非常值得称赞的方式回答了这个问题:
以下来自 Adrian Rosebrock 的书《Python 计算机视觉和深度学习》中的引言以一种非常值得称赞的方式回答了这个问题:
每个节点执行一个简单的计算。 然后,每个连接都承载从一个节点到另一节点的信号(即计算的输出),并用权重标记,该权重指示信号放大或减小的程度。 一些连接具有较大的正权重,可以放大信号,表明进行分类时信号非常重要。 其他的则具有负权重,从而降低了信号的强度,因此指定了节点的输出在最终分类中的重要性较低。 如果这种系统由具有可通过学习算法修改的连接权重的图结构组成,则我们将其称为人工神经网络。
......@@ -122,7 +122,7 @@
* 层数
* 激活功能
我们现在可以在 MLP 和神经网络之间划清界限。 迈克尔·尼尔森(Michael Nielson)在其在线书*神经网络和深度学习*中对此进行了很好的描述:
我们现在可以在 MLP 和神经网络之间划清界限。 迈克尔·尼尔森(Michael Nielson)在其在线书《神经网络和深度学习》中对此进行了很好的描述:
由于历史原因,这种多层网络有时令人困惑,尽管它们由乙状神经元而非感知器组成,但有时也称为*多层感知器**MLP*
......@@ -138,12 +138,12 @@
请注意有关此玩具数据集的以下几点:
* 它具有两个预测变量, *x1**x2* ,这些预测变量通常称为输入特征向量。
* 通常将 *x1**x2* 分配给矢量`X`(稍后会详细介绍)。
* 它具有两个预测变量,`x1``x2`,这些预测变量通常称为输入特征向量。
* 通常将`x1``x2`分配给矢量`X`(稍后会详细介绍)。
* 响应变量为`y`
* 我们有 10 个实例(包含 *x1**x2* `y`属性)被分为两个类别,0 和 1。
* 给定 *x1**x2* ,我们的(神经网络)任务是预测`y`,这实际上使这成为分类任务。
* 我们有 10 个实例(包含`x1``x2``y`属性)被分为两个类别,0 和 1。
* 给定`x1``x2`,我们的(神经网络)任务是预测`y`,这实际上使这成为分类任务。
当我们说神经网络预测某事时,是指应该学习最能近似某个功能的输入数据的底层表示(我们看到了一段时间前的功能图看起来像)。
......@@ -167,7 +167,7 @@
现在,让我们不用担心重量值。 权重矩阵的尺寸解释如下:
* 行数等于特征向量的数量(在我们的示例中为 *x1**x2* )。
* 行数等于特征向量的数量(在我们的示例中为`x1``x2`)。
* 列数等于第一个隐藏层中的神经元数。
矩阵中的每个权重值都有一些后缀和上标。 如果我们将权重的一般形式表示为![](img/c16cd84f-3e3a-42e5-b619-a628b3160c0c.png),则应将其解释如下:
......@@ -228,7 +228,7 @@ S 形激活函数输出的值范围为 0-1,但是我们正在处理二进制
![](img/2fe2f681-2cd6-4422-b942-fba491e140e1.png)
这里,`w``b`是网络试图学习的权重和偏差。 字母`m`表示训练实例的数量,在这种情况下为 10。 其余的似乎很熟悉。 让我们把函数的原始形式 *L()*放进去,看看 *J()*是什么样子:
这里,`w``b`是网络试图学习的权重和偏差。 字母`m`表示训练实例的数量,在这种情况下为 10。 其余的似乎很熟悉。 让我们把函数的原始形式`L()`放进去,看看`J()`是什么样子:
![](img/bc0b7b74-497f-4bae-8f14-a5661a0c48af.png)
......@@ -259,7 +259,7 @@ Here, we are taking the partial derivative of *J(w,b)* with respect to the weigh
这些权重和偏差的新分配基本上称为*反向传播*,并且它是与*梯度下降*结合完成的。 在计算了权重和偏差的新值之后,重复整个前向传播过程,直到 NN 模型得到很好的概括。 请注意,这些规则仅适用于一个实例,前提是该实例仅具有一项功能。 在包含多个功能的多个实例上执行此操作可能很困难,因此,我们将跳过该部分,但是,有兴趣看到此功能的完整版本的人员可以参考 Andrew Ng 的在线讲座。
我们已经介绍了标准神经网络的必要基本单元,这并不容易。 我们先定义神经元,然后以反向传播(反向传播的讨厌术语)结束。 我们已经奠定了深度神经网络的基础。 读者可能想知道这是否是我们刚刚研究的深度神经网络。 正如 **Andriy Burkov** 所说(摘自他的书*百页机器学习书*):
我们已经介绍了标准神经网络的必要基本单元,这并不容易。 我们先定义神经元,然后以反向传播(反向传播的讨厌术语)结束。 我们已经奠定了深度神经网络的基础。 读者可能想知道这是否是我们刚刚研究的深度神经网络。 正如 **Andriy Burkov** 所说(摘自他的书《百页机器学习书》):
深度学习是指训练具有两个以上非输出层的神经网络。 ……术语“深度学习”是指使用现代算法和数学工具包独立于神经网络的深度来训练神经网络。 实际上,使用在输入和输出层之间具有 2-3 层的神经网络可以解决许多业务问题。
......@@ -353,9 +353,9 @@ CNN 的核心是一个称为卷积的操作(在计算机视觉和图像处理
在上图中,展开了 RNN(左图)以显示三个简单的前馈网络。 但是这些展开的网络有什么作用? 现在让我们找出答案。
让我们考虑序列预测的任务。 为简单起见,我们将研究 RNN 如何学习预测下一个字母来完成一个单词。 例如,如果我们用一组字母 *{w,h,a,t}* 训练网络,并给字母 *w,h*`a`顺序,网络应该能够预测字母应该是`t`,以便产生有意义的单词“ what”。 就像我们之前看到的前馈网络一样,`X`在 RNN 术语中充当网络的输入向量,该向量也称为网络的词汇表。 在这种情况下,网络词汇为 *{w,h,a,t}*
让我们考虑序列预测的任务。 为简单起见,我们将研究 RNN 如何学习预测下一个字母来完成一个单词。 例如,如果我们用一组字母`{w, h, a, t}`训练网络,并将顺序提供字母`w, h``a`,网络应该能够预测字母应该是`t`,以便产生有意义的单词`what`。 就像我们之前看到的前馈网络一样,`X`在 RNN 术语中充当网络的输入向量,该向量也称为网络的词汇表。 在这种情况下,网络词汇为`{w, h, a, t}`
向网络依次提供字母 *w,h* `a`。 让我们尝试给这些字母指定索引:
向网络依次提供字母`w, h``a`。 让我们尝试给这些字母指定索引:
* ![](img/454ba3b9-649e-4cae-877b-6b2cde5bf155.png)→![](img/f653ecc8-9aae-468b-983e-256285270df6.png)
* ![](img/173cfead-90f6-4776-83e6-208f4919ba20.png)→![](img/a2112f9b-9250-42c1-85c0-9be6fab58c48.png)
......@@ -416,7 +416,7 @@ RNN ![](img/4b9aaa2a-87d5-487b-9d8c-6a54cb705d09.png)的第一遍是字母`w`。
![](img/fefb7cb2-a21e-4ac2-8aaa-84401ab2bf71.png)
我们得到了![](img/5a3592f6-3ebd-4459-aa50-dfaa77b7eedd.png)的结果。 *ht* 充当下一个时间步的![](img/1f0a601e-c001-4c1a-86b6-84ffa79cc16e.png)。 现在,我们将使用等式(2)计算![](img/62216a8f-4753-45e0-853e-a73540ac5f36.png)的值。 我们将需要另一个随机初始化的权重矩阵![](img/7e9e4820-3c32-47c8-9529-a914a16cdd59.png)(形状为 4 x 3):
我们得到了![](img/5a3592f6-3ebd-4459-aa50-dfaa77b7eedd.png)的结果。 `ht`充当下一个时间步的![](img/1f0a601e-c001-4c1a-86b6-84ffa79cc16e.png)。 现在,我们将使用等式(2)计算![](img/62216a8f-4753-45e0-853e-a73540ac5f36.png)的值。 我们将需要另一个随机初始化的权重矩阵![](img/7e9e4820-3c32-47c8-9529-a914a16cdd59.png)(形状为 4 x 3):
![](img/281bbcd0-d1ba-46a1-9998-7609b6319c5f.png)
......@@ -430,7 +430,7 @@ RNN ![](img/4b9aaa2a-87d5-487b-9d8c-6a54cb705d09.png)的第一遍是字母`w`。
如果有人对学习 softmax 函数的外观感到好奇,可以在[这个页面](http://bit.ly/softmaxfunc)上找到一篇非常有用的文章。
因此,RNN 告诉我们`w`之后的下一个字母更有可能是![](img/fdcd5b37-b1e7-4248-8ec0-1569c96a25a8.png)。 至此,我们完成了 RNN 的初始遍历。 作为练习,您可以使用从此传递中获得的 *ht* 值,然后将其(以及下一个字母`h`)应用于 RNN 的下一传递,以了解什么 发生。
因此,RNN 告诉我们`w`之后的下一个字母更有可能是![](img/fdcd5b37-b1e7-4248-8ec0-1569c96a25a8.png)。 至此,我们完成了 RNN 的初始遍历。 作为练习,您可以使用从此传递中获得的`ht`值,然后将其(以及下一个字母`h`)应用于 RNN 的下一传递,以了解什么 发生。
现在,让我们解决最重要的问题-什么是网络学习? 同样,权重和偏见! 您可能已经猜到了下一个句子。 使用反向传播进一步优化了这些权重。 现在,这种反向传播与我们之前看到的有些不同。 此版本的反向传播称为**整个时间**的反向传播。 我们不会对此进行学习。 在结束本节之前,让我们总结一下在 RNN 前向传递过程中执行的步骤(在词汇表进行一次热编码之后):
......@@ -442,7 +442,7 @@ RNN ![](img/4b9aaa2a-87d5-487b-9d8c-6a54cb705d09.png)的第一遍是字母`w`。
很高兴知道,除了 CNN 和 RNN 之外,还有其他类型的神经网络,例如自编码器,生成对抗网络,胶囊网络等。 在前两节中,我们详细了解了两种最强大的神经网络类型。 但是,当我们谈论前沿的深度学习应用程序时,这些网络是否足以被使用? 还是我们需要在这些基础上进行更多增强? 事实证明,尽管这些架构性能良好,但是它们无法扩展,因此需要更复杂的架构。 在下一章中,我们将介绍其中一些专门的体系结构。
自“第 1 章”,*揭开人工智能和机器学习基础知识*以来,我们已经涵盖了很多理论。 在接下来的几节中,我们将深入研究一些实际的例子。
自“第 1 章”,“人工智能和机器学习基础知识揭秘”以来,我们已经涵盖了很多理论。 在接下来的几节中,我们将深入研究一些实际的例子。
# 探索 Jupyter 笔记本
......@@ -510,9 +510,9 @@ jupyter notebook
当单元处于命令模式时,它具有灰色边框。 在这种模式下,单元格内容无法更改。 在此模式下,键盘的键被映射到多个快捷方式,这些快捷方式可用于修改单元格或整个笔记本。
在命令模式下,如果按键盘上的*输入*键,则单元格模式将变为编辑模式。 在此模式下,可以更改单元格的内容,并可以调用浏览器中常规文本框中可用的基本键盘快捷方式。
在命令模式下,如果按键盘上的`Enter`键,则单元格模式将变为编辑模式。 在此模式下,可以更改单元格的内容,并可以调用浏览器中常规文本框中可用的基本键盘快捷方式。
要退出编辑模式,用户可以使用 *Esc* 键。 要运行特定的单元格,用户必须输入 *Shift* + *返回*,每种情况下将执行以下操作之一:
要退出编辑模式,用户可以使用`Esc`键。 要运行特定的单元格,用户必须输入`Shift + Enter`,每种情况下将执行以下操作之一:
* 对于降价单元,应显示渲染的降价。
* 对于原始单元格,输入的原始文本应可见。
......@@ -828,7 +828,7 @@ employees
熊猫 DataFrame 可用的一些最重要的方法如下:
* `head(n)``tail(n)`:要在数据帧的 n 行中显示顶部或底部*。*
* `head(n)``tail(n)`:要在数据帧的 n 行中显示顶部或底部
* `info( )`:显示有关 DataFrame 的所有列,维度和数据类型的信息。
* `describe( )`:显示有关 DataFrame 中每个列的便捷汇总和统计信息。 非数字的列将被省略。
......
......@@ -225,7 +225,7 @@ print(test_labels[0])
# 使用 Python 实现简单的神经网络
在进行了非常基本的数据分析之后,我们可以继续使用 Python 编写我们的第一个神经网络。 在继续之前,您可以在“第 2 章”*中使用 Python* 修订神经网络的概念。 现在,我们将创建一个**卷积神经网络****CNN**),该网络将预测手写数字标签。
在进行了非常基本的数据分析之后,我们可以继续使用 Python 编写我们的第一个神经网络。 在继续之前,您可以在“第 2 章”中复习神经网络的概念。 现在,我们将创建一个**卷积神经网络****CNN**),该网络将预测手写数字标签。
我们首先创建一个新的 Jupyter 笔记本。 您可以将其命名为`Model.ipynb`以作为约定。 该笔记本将用于开发深度学习模型的**腌制**版本,随后将其放入将生成预测的脚本中。
......@@ -518,13 +518,13 @@ if __name__ == "__main__":
前面的代码首先将必要的模块导入脚本。 然后,它将应用程序设置为 Flask 服务器对象,并定义了`index`函数,该指令具有处理对`"/"`地址发出的所有请求的指令,而与请求的类型无关。 在脚本末尾,使用 Flask 对象应用程序的`run()`方法将脚本绑定到系统上的指定端口。
现在,我们可以部署此简单的 *Hello World* Flask 服务器。 我们在终端中运行以下命令:
现在,我们可以部署此简单的 *HelloWorld* Flask 服务器。 我们在终端中运行以下命令:
```py
python flask_app.py
```
现在,当我们在浏览器中打开`http://localhost/` URL 时,将看到一个页面,其中显示 *Hello World* `index`函数处理在服务器根目录处发出的请求,因为其路由设置为`"/"`。 现在让我们将此示例扩展为创建一个可以处理专门用于预测的请求的 API。
现在,当我们在浏览器中打开`http://localhost/` URL 时,将看到一个页面,其中显示`Hello World``index`函数处理在服务器根目录处发出的请求,因为其路由设置为`"/"`。 现在让我们将此示例扩展为创建一个可以处理专门用于预测的请求的 API。
# 导入必要的模块
......
......@@ -140,7 +140,7 @@ sq_sum.print();
# 模型和层
在深度学习文献中,模型是指神经网络本身,特别是神经网络体系结构。 正如“第 2 章”,*使用 Python* 进行深度学习的入门中所讨论的那样,神经网络由基本组件组成,例如层之间的层,神经元和连接。 TF.js 提供了两个用于创建这些模型的函数-`tf.model``tf.sequential``tf.model`帮助您获得更复杂的体系结构,例如跳过某些层,而`tf.sequential`提供了一种创建线性层堆叠而无需跳过,分支等的方法。
在深度学习文献中,模型是指神经网络本身,特别是神经网络体系结构。 正如“第 2 章”,“使用 Python 进行深度学习的入门”中所讨论的那样,神经网络由基本组件组成,例如层之间的层,神经元和连接。 TF.js 提供了两个用于创建这些模型的函数-`tf.model``tf.sequential``tf.model`帮助您获得更复杂的体系结构,例如跳过某些层,而`tf.sequential`提供了一种创建线性层堆叠而无需跳过,分支等的方法。
TF.js 为不同类型的任务提供了不同类型的专用层-`tf.layers.dense``tf.layers.dropout``tf.layers.conv1d``tf.layers.simpleRNN``tf.layers.gru``tf.layers.lstm`。 以下示例在`tf.sequential``tf.layers.dense`的帮助下演示了一个简单的神经网络模型:
......@@ -160,7 +160,7 @@ model.add(tf.layers.dense({units: 1, activation: sigmoid}));
# 使用 TF.js 的案例研究
我们将遵循机器学习项目中通常涉及的所有步骤(我们在“第 1 章”,*揭开了人工智能和机器学习基础知识*中的讨论)。 一个好的项目始于定义明确的问题陈述。 因此,让我们快速查看一下并相应地决定后续步骤。
我们将遵循机器学习项目中通常涉及的所有步骤(我们在“第 1 章”,“人工智能和机器学习基础知识揭秘”中的讨论)。 一个好的项目始于定义明确的问题陈述。 因此,让我们快速查看一下并相应地决定后续步骤。
# 我们的 TF.js 小型项目的问题陈述
......@@ -399,7 +399,7 @@ var doTrain = async function (req, res, next) {
}
```
`doTrain`中间件调用`train_data()`函数并等待其结果。 `train_data()`函数返回 *Promise* ,以便继续执行而不会冻结。 `next()`功能在`train_data()`功能完成后立即运行,并且仅将程序的执行传递给中间件旁边*链接*的功能,如下所示:
`doTrain`中间件调用`train_data()`函数并等待其结果。 `train_data()`函数返回`Promise`,以便继续执行而不会冻结。 `next()`功能在`train_data()`功能完成后立即运行,并且仅将程序的执行传递给中间件旁边*链接*的功能,如下所示:
```py
app.use(doTrain).post('/train', function(req, res) {
......
......@@ -153,6 +153,6 @@ API 除了在需要快速生产或最小工作量的产品演示时为您节省
# 概要
在本章中,我们详细介绍了术语 API。 在“第 3 章”*创建第一个深度学习 Web 应用程序*中,我们看到了如何使用 Python 使用 Python 编写 API Flask,我们看到了如何在 Web 应用程序中使用该 API。 现在,我们知道 API 与语言库的区别以及使用 API​​的重要性。 我们熟悉一些顶尖组织提供的各种深度学习 API。
在本章中,我们详细介绍了术语 API。 在“第 3 章”和“创建第一个深度学习 Web 应用程序”中,我们看到了如何使用 Python 使用 Python 编写 API Flask,我们看到了如何在 Web 应用程序中使用该 API。 现在,我们知道 API 与语言库的区别以及使用 API​​的重要性。 我们熟悉一些顶尖组织提供的各种深度学习 API。
在接下来的章节中,我们将了解如何使用这些 API 来构建功能强大且智能的 Web 应用程序。 在下一章中,我们将从 Google Cloud Platform 提供的深度学习 API 开始。
\ No newline at end of file
......@@ -348,7 +348,7 @@ Cloud Vision API 为我们提供了许多用于执行计算机视觉任务的实
* 当源任务与使用转移学习的任务不充分相关时,转移学习会导致性能下降。
* 有时很难确定从源任务到目标任务需要多少转移。
对于迁移学习的深入研究,建议您阅读 Dipanjan 等人的书籍 *Python 的动手迁移学习*。 现在,我们将借助示例学习如何使用 Python 使用 Cloud Vision API。
对于迁移学习的深入研究,建议您阅读 Dipanjan 等人的书籍 《Python 迁移学习实践指南》。 现在,我们将借助示例学习如何使用 Python 使用 Cloud Vision API。
# 设置视觉客户端库
......@@ -492,7 +492,7 @@ translate_client = translate.Client()
original = u'नमस्ते'
```
这样会在印地语中创建一个包含单词 *Namaste* 的 Unicode 字符串。 让我们看看它会转换成英文!
这样会在印地语中创建一个包含单词`Namaste`的 Unicode 字符串。 让我们看看它会转换成英文!
我们调用 API 使用以下代码将文本翻译成英文:
......@@ -510,7 +510,7 @@ translation = translate_client.translate(original, target_language="en")
}
```
从该词典中可以轻松推断出检测到的语言是印地语(由`hi`表示)。 输入以输入的格式显示。`translatedText`保留`Hello`,这是 *Namaste* 的确切翻译。
从该词典中可以轻松推断出检测到的语言是印地语(由`hi`表示)。 输入以输入的格式显示。`translatedText`保留`Hello`,这是`Namaste`的确切翻译。
# 概要
......
# 使用 Python 的 AWS 上的 DL:对象检测和家庭自动化
我们熟悉了 Google Cloud Platform 的一些基于深度学习的产品,并在“第 6 章”,*在 Google Cloud Platform 上使用 Python* 进行深度学习中学习了如何使用它们。 现在,我们对云计算有了一个很好的概述,在本章中,我们将介绍另一个云计算平台 **Amazon Web Services****AWS**),该平台还提供了一些高性能的 以及高度可靠的基于深度学习的解决方案,使生活更加轻松。 在本章中,我们将以 API 的形式介绍它们中的两个,并学习如何从 Python 程序中使用它们。
我们熟悉了 Google Cloud Platform 的一些基于深度学习的产品,并在“第 6 章”,“在 Google Cloud Platform 上使用 Python 进行深度学习”中学习了如何使用它们。 现在,我们对云计算有了一个很好的概述,在本章中,我们将介绍另一个云计算平台 **Amazon Web Services****AWS**),该平台还提供了一些高性能的 以及高度可靠的基于深度学习的解决方案,使生活更加轻松。 在本章中,我们将以 API 的形式介绍它们中的两个,并学习如何从 Python 程序中使用它们。
我们将首先设置我们的 AWS 账户并在 Python 中配置 boto3。 然后,我们将学习如何在 Python 中使用 Rekognition API 和 Alexa API。
......@@ -82,7 +82,7 @@ AWS 在各种领域中提供其服务和解决方案。 以下是 AWS 提供的
该列表实际上是相当广泛的,但是暂时让我们将重点局限于机器学习(也称为深度学习)服务。
AWS 控制台中的搜索栏还使您可以搜索可能已经听说过的 AWS API。 让我们在其中键入`Rekognition`并点击*输入*。 应该为您提供 Rekognition 的主页,如以下屏幕截图所示:
AWS 控制台中的搜索栏还使您可以搜索可能已经听说过的 AWS API。 让我们在其中键入`Rekognition`并点击`Enter`。 应该为您提供 Rekognition 的主页,如以下屏幕截图所示:
![](img/4df1029c-865e-4d73-8f88-fcb487bf9849.png)
......
......@@ -509,7 +509,7 @@ hidden_layers = 3
hidden_layers_neurons = 400
```
我们将输入数据的维度定义为`784`。 回顾“第 3 章”,*创建第一个深度学习 Web 应用程序*的示例,在此我们使用了 MNIST 数据集。 MNIST 数据集中的图像以单维数组的格式存储,其中包含`0``255`范围内的 28 x 28 值。 图像属于 10 个不同的类别,分别对应于阿拉伯数字系统中的每个数字。 我们提供 3 个隐藏层,每个包含 400 个神经元。
我们将输入数据的维度定义为`784`。 回顾“第 3 章”,“创建第一个深度学习 Web 应用程序”的示例,在此我们使用了 MNIST 数据集。 MNIST 数据集中的图像以单维数组的格式存储,其中包含`0``255`范围内的 28 x 28 值。 图像属于 10 个不同的类别,分别对应于阿拉伯数字系统中的每个数字。 我们提供 3 个隐藏层,每个包含 400 个神经元。
9. 然后,我们创建两个 CNTK `input`变量,以在创建模型时使用。 这是 CNTK 最重要的概念之一。
......
......@@ -47,7 +47,7 @@
向最终推荐系统提供输入的主要实体是用户。 根据用户的首选项(现在称为输入功能首选项),系统将提供最符合其首选项的产品列表。 因此,长话短说,问题陈述可以写为:
*给定一组输入功能(用户偏好),我们的任务是建议产品列表。*
“给定一组输入功能(用户偏好),我们的任务是建议产品列表。”
现在我们有一个定义明确的问题说明,接下来继续进行,并在下一节中建立后续步骤。
......@@ -76,11 +76,11 @@
让我们对原始问题陈述进行一些增强,然后再继续进行。 这是原始的问题陈述:
*给定一组输入功能(用户偏好),我们的任务是建议产品列表。*
“给定一组输入功能(用户偏好),我们的任务是建议产品列表。”
如果推荐不合格产品,用户将不会喜欢我们的系统。 因此,我们将对问题陈述进行一些修改,如下所示:
*给定一组输入功能(用户首选项),我们的任务是建议可能要购买的最佳产品清单。*
“给定一组输入功能(用户首选项),我们的任务是建议可能要购买的最佳产品清单。”
为了让我们的系统针对给定的标准推荐最佳产品列表,首先需要知道产品的平均等级。 除了平均评分之外,获取有关特定产品的以下信息(名称除外)将非常有用:
......@@ -125,7 +125,7 @@
假设您正在从亚马逊在美国的销售网点抓取产品数据,而最终在印度版本的亚马逊上搜索产品。 刮板可能会为您提供来自印度网点的数据,可能不适合推荐给美国居民。
此外,由于亚马逊以及类似的服务(例如 Flipkart)利用推荐系统为他们的客户定位最适合产品的*产品,因此在数据收集期间,抓取工具不应成为此类建议的牺牲品。 重要的是,抓取工具应时不时地清除其上下文,并避免由于亚马逊实施的 AI 而产生偏见。*
此外,由于亚马逊以及类似的服务(例如 Flipkart)利用推荐系统为他们的客户定位最适合*产品*,因此在数据收集期间,抓取工具不应成为此类建议的牺牲品。 重要的是,抓取工具应时不时地清除其上下文,并避免由于亚马逊实施的 AI 而产生偏见。
让我们以 Amazon Fine Food Reviews 数据集为例。 尽管乍看之下数据集看起来很平衡,但我们可以发现数据集中存在很多偏差。 考虑客户为评论产品而撰写的文字长度。 让我们根据它们的得分在图表中绘制它们。 下图显示了等级为 1 和 2 星的产品的图:
......@@ -502,7 +502,7 @@ python main.py
现在,我们将创建一个简单,最少的 UI 来使用我们创建的 API。 本质上,我们将创建一个搜索栏,用户可以在其中输入所需的产品或产品规格,API 会根据用户的查询返回建议。 我们将不讨论构建 UI 的代码,但已将其包含在 GitHub 存储库中,该存储库可在[这个页面](http://tiny.cc/DL4WebCh9)中找到。
启动服务器后,该 UI 将在`http://127.0.0.1:4000`处可见,如*创建 API 回答搜索查询*部分的步骤 9 所示。
启动服务器后,该 UI 将在`http://127.0.0.1:4000`处可见,如“创建 API 回答搜索查询”部分的步骤 9 所示。
我们创建的界面如下所示:
......
......@@ -24,7 +24,7 @@
# reCAPTCHA 的故事
*对人类易如反掌*这是 reCAPTCHA 的口号,它陈述了一个简单的想法,即 reCAPTCHA 是一个系统,该系统确定应用程序或网站上的用户是真正的人类用户还是自动脚本 。 reCAPTCHA 是 CAPTCHA 技术的特定实现,CAPTCHA 技术是一种使用带有扭曲,弯曲的字母和数字的视觉效果,并要求用户解密视觉图像的内容并将其以纯格式写出的方法。
“对人类易如反掌” – 这是 reCAPTCHA 的口号,它陈述了一个简单的想法,即 reCAPTCHA 是一个系统,该系统确定应用程序或网站上的用户是真正的人类用户还是自动脚本 。 reCAPTCHA 是 CAPTCHA 技术的特定实现,CAPTCHA 技术是一种使用带有扭曲,弯曲的字母和数字的视觉效果,并要求用户解密视觉图像的内容并将其以纯格式写出的方法。
如果您在 2000 年代初期是普通的互联网用户,那么您可能会在许多网站上看到类似于以下验证码的图片:
......@@ -163,7 +163,7 @@ Y_train, Y_test = Y[0:split], Y[split:len(Y)]
请记住,从步骤 2 开始,该数据主要包含文本。 当涉及文本数据时,很可能存在上下文和与之关联的特定顺序。
例如,考虑以下句子中的单词- *Sachin Tendulkar 是伟大的板球运动员*。 为了传达预期的含义,不得更改单词的顺序。 在机器学习中处理文本数据时,这就是维护顺序和上下文的重要性所在的地方。
例如,考虑以下句子中的单词 - “Sachin Tendulkar 是伟大的板球运动员”。 为了传达预期的含义,不得更改单词的顺序。 在机器学习中处理文本数据时,这就是维护顺序和上下文的重要性所在的地方。
在我们的案例中,我们将使用一种特殊类型的递归神经网络-**长短期记忆****LSTM**),它将学习识别常规的用户行为。
......@@ -320,7 +320,7 @@ python main.py
# Django 项目设置
在本节中,我们将使用 Django。 在继续本节之前,请确保在系统上安装了有效的 Django。 您可以在*中找到 Django 的安装说明,在 “第 8 章” *中,使用 python 在 Microsoft Azure 上进行深度学习有关 Django Web 开发的简介*部分。*
在本节中,我们将使用 Django。 在继续本节之前,请确保在系统上安装了有效的 Django。 您可以在“第 8 章”,“使用 python 在 Microsoft Azure 上进行深度学习”的“Django Web 开发简介”部分中找到 Django 的安装说明
现在,我们将创建一个 Django 项目。 为此,我们使用以下命令:
......@@ -346,7 +346,7 @@ webapp/
# 在项目中创建一个应用
如“第 8 章”,*在 Microsoft Azure 上使用 Python* 进行深度学习中所述,我们现在必须将应用程序添加到网站项目中。 为此,我们使用以下命令:
如“第 8 章”,“在 Microsoft Azure 上使用 Python 进行深度学习”中所述,我们现在必须将应用程序添加到网站项目中。 为此,我们使用以下命令:
```py
cd webapp
......
......@@ -730,7 +730,7 @@ pickle.loads(data)
前面的示例和相关警告暗示了 AI 后端和几乎每个自动化系统中的一般安全威胁-不可信输入的危害。 因此,重要的是要正确验证可能在模型中输入的任何数据(无论是在培训还是测试中),以确保不会对系统造成任何严重问题。
对生产中的模型进行连续监视也很重要。 模型通常会过时和过时,并且冒着过一会儿做出过时的预测的风险。 重要的是要检查 AI 模型所做的预测的相关性。 考虑一个只了解 CD-ROM 和软盘的人。 随着时间的流逝,我们想到了 USB 驱动器和固态磁盘。 此人将无法对最近的设备做出任何明智的决定。 同样,从 2000 年代初开始针对​​文本转储训练的**自然语言处理****NLP**)模型将无法理解有人问*的对话。 复仇者联盟:残局的 Wiki 链接?*
对生产中的模型进行连续监视也很重要。 模型通常会过时和过时,并且冒着过一会儿做出过时的预测的风险。 重要的是要检查 AI 模型所做的预测的相关性。 考虑一个只了解 CD-ROM 和软盘的人。 随着时间的流逝,我们想到了 USB 驱动器和固态磁盘。 此人将无法对最近的设备做出任何明智的决定。 同样,从 2000 年代初开始针对​​文本转储训练的**自然语言处理****NLP**)模型将无法理解有人问`Can you please WhatsApp me the wiki link for Avengers: Endgame?`的对话
最后,您如何才能对 AI 后端的性能进行优化?
......
......@@ -178,7 +178,7 @@ plt.imshow(blurimg, cmap='gray')
![](img/9dacf64c-b350-4208-b721-8988db47e628.png)
左边是输入图像,右边是通过对图像应用水平核而获得的图像。 水平内核仅检测水平边缘,这可以通过水平线的白色条纹看到。 有关水平内核的详细信息,请参见*图像渐变*部分。
左边是输入图像,右边是通过对图像应用水平核而获得的图像。 水平内核仅检测水平边缘,这可以通过水平线的白色条纹看到。 有关水平内核的详细信息,请参见“图像渐变”部分。
前面的代码导入了用于机器学习和计算机视觉工作的必要 Python 库,例如 NumPy 处理数组,cv2 用于 openCV 计算机视觉工作,PIL 处理 Python 代码中的图像,以及 Matplotlib 绘制结果。 然后,它使用 PIL 导入图像,并使用 OpenCV `BGr2GRAY`缩放功能将其转换为灰度。 它使用 NumPy 数组创建用于边缘过滤的内核,使用内核模糊图像,然后使用`imshow()`函数显示图像。
......
......@@ -219,7 +219,7 @@ $make
已列出以下步骤作为参考:
1. 打开一个新的终端窗口,输入`sudo su`,然后按*输入*
1. 打开一个新的终端窗口,输入`sudo su`,然后按`Enter`
2. 单击以下链接并下载`R3 l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz`。 请注意,[`p_`和`before.tgz`之后的数字在将来的版本中可能会更改](https://download.01.org/opencv/2019/openvinotoolkit/R3/)
3. 创建一个安装文件夹:
......
......@@ -272,7 +272,7 @@ models-master/research$ (cd slim && python setup.py sdist)
完成上述所有步骤后,我们将准备进行培训。 如前所述,通过执行以下命令在终端中开始训练:
1. 该命令很长,但是将其复制到文本编辑器,仅将`{YOUR_GCS_BUCKET}`更改为`burgerfries`(在您的情况下,如果名称不同,则将其更改为该名称)。 完成后,将其粘贴到终端中并点击*输入*
1. 该命令很长,但是将其复制到文本编辑器,仅将`{YOUR_GCS_BUCKET}`更改为`burgerfries`(在您的情况下,如果名称不同,则将其更改为该名称)。 完成后,将其粘贴到终端中并点击`Enter`
```py
$ gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` --job-dir=gs://${YOUR_GCS_BUCKET}/train --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz --module-name object_detection.model_tpu_main --runtime-version 1.15 --scale-tier BASIC_TPU --region us-central1 -- --model_dir=gs://${YOUR_GCS_BUCKET}/train --tpu_zone us-central1 --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config
......
......@@ -169,7 +169,7 @@ import os
您可以在以下位置阅读有关使用`!pip install`命令以及其他将新库导入并安装到您的 Colaboratory 运行时的方法的[更多信息](https://colab.research.google.com/notebooks/snippets/importing_libraries.ipynb)
2. 要运行代码单元,请按住 *Shift* 键并按*输入*。 TensorFlow 版本的下载和安装进度显示在您执行代码的单元下方。这将需要几秒钟,之后您会收到类似于`Successfully installed <package_name>, <package_name>, ...`的消息。
2. 要运行代码单元,请按住 *Shift* 键并按`Enter`。 TensorFlow 版本的下载和安装进度显示在您执行代码的单元下方。这将需要几秒钟,之后您会收到类似于`Successfully installed <package_name>, <package_name>, ...`的消息。
3. 最后,我们需要`os`模块来处理文件系统上的文件。
4. 下载数据集并提取图像。
......
......@@ -212,13 +212,13 @@ chmod +x Anaconda*.sh
![](img/a8be21c6-5f69-4cfa-abd4-c3ce3d215c2f.png)
10. 点击*输入*继续检查许可证。 您会看到许可证文件。
10. 点击`Enter`继续检查许可证。 您会看到许可证文件。
11. 点击向下箭头键以阅读协议。 输入`yes`接受许可证。
12. 系统将要求您确认 Anaconda 安装的位置,如以下屏幕截图所示:
![](img/e4579d4a-4130-4301-ae77-1eb791efaa4d.png)
13. 点击*输入*确认位置。 软件包提取和安装将开始。 完成此操作后,系统将询问您是否要初始化 Anaconda 环境。 在此处输入`yes`,如下所示:
13. 点击`Enter`确认位置。 软件包提取和安装将开始。 完成此操作后,系统将询问您是否要初始化 Anaconda 环境。 在此处输入`yes`,如下所示:
![](img/f1f89b99-db43-4c8a-8a0d-71424074b21b.png)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册