提交 5ee73c6b 编写于 作者: W wizardforcel

2020-12-14 21:11:38

上级 9703f58e
......@@ -102,7 +102,7 @@
* **计划**:此字段用于优化计划,从而以最小的成本为我们带来最大的回报。 这些软件程序从有关情况的事实和目标说明开始。 这些程序还了解世界的事实,因此他们知道规则是什么。 他们从这些信息中得出实现目标的最佳方案。
* **启发式**:启发式是用于解决给定问题的技术,该技术在短期内解决该问题是实用且有用的,但不能保证是最优的。 这更像是对应该采用何种方法解决问题的有根据的猜测。 在 AI 中,我们经常遇到无法检查所有可能性以选择最佳选项的情况。 因此,我们需要使用启发式方法来实现目标。 它们在机器人,搜索引擎等领域的 AI 中得到了广泛使用。
* **遗传编程**:遗传编程是一种通过使程序配对并选择最适合的条件来获取程序来解决任务的方法。 程序被编码为一组基因,使用一种算法来获得可以很好地执行给定 任务的程序。
* **遗传编程**:遗传编程是一种通过使程序配对并选择最适合的条件来获取程序来解决任务的方法。 程序被编码为一组基因,使用一种算法来获得可以很好地执行给定任务的程序。
# 机器学习的五个流派
......@@ -250,7 +250,7 @@ AI 世界中有两种类型的模型:分析模型和学习模型。 在我们
$ python3 --version
```
如果看到打印出类似`Python3.x.x`(其中`x.x`是版本号)的内容,那很好。 如果不是,则直接安装在 中
如果看到打印出类似`Python3.x.x`(其中`x.x`是版本号)的内容,那很好。 如果不是,则直接安装。
## 在 Ubuntu 上安装
......
......@@ -165,7 +165,7 @@ AI 可以协助生成候选药物(即要在医学上测试的分子),然
数据科学家开发了支持 AI 的平台,与传统方法相比,该平台可以在几分钟(而不是几天)内解释 MRI 扫描和放射图像,并且准确性更高。
令人惊讶的是,美国放射学院的领导者们对此并不感到担心,而是将 AI 的出现视为对医生有价值的工具。 为了促进该领域的进一步发展,**美国放射学院数据研究所****ACR DSI**)发布了医学成像中的多个 AI 用例,并计划继续发布 更多。
令人惊讶的是,美国放射学院的领导者们对此并不感到担心,而是将 AI 的出现视为对医生有价值的工具。 为了促进该领域的进一步发展,**美国放射学院数据研究所****ACR DSI**)发布了医学成像中的多个 AI 用例,并计划继续发布更多。
**精神病学分析**
......
......@@ -123,7 +123,7 @@
| --- | --- | --- |
| 欠款帐户 | 借款人现在拖欠的帐户数。 | 如果借款人在支付账单方面遇到困难,他们可能会在支付新贷款方面遇到困难。 |
| 贸易账户 | 在过去 24 个月内开设的交易数量。 | 如果数量太少,这只是一个问题。 |
| 借款人地址 | 借款人在贷款申请中提供的地址。 | 放下 地址是唯一的。 唯一变量不提供预测能力。 |
| 借款人地址 | 借款人在贷款申请中提供的地址。 | 丢掉它。地址是唯一的。 唯一变量不提供预测能力。 |
| 邮政编码 | 借款人在贷款申请中提供的邮政编码。 | 这不是唯一的,可以具有预测能力。 |
| 年收入 | 借款人在注册期间提供的自报年收入。 | 更多的收入使借款人可以更轻松地处理更大的付款。 |
| 当前余额 | 所有帐户的平均当前余额。 | 孤立地没有价值。 需要相对。 |
......@@ -330,7 +330,7 @@
### 总拥有成本(TCO)
数据科学家需要根据每秒记录的数量来监视其模型的性能。 尽管这可以使您更深入地了解模型的效率,但公司还应将重点放在从模型中获得的收益与成本之间。 建议监视机器学习管道的所有步骤的成本。 如果密切跟踪此信息,则企业可以就如何降低成本以及如何把握新机遇,或者某些管道是否不能提供足够的价值而做出明智的决定,而需要进行更改或关闭
数据科学家需要根据每秒记录的数量来监视其模型的性能。 尽管这可以使您更深入地了解模型的效率,但公司还应将重点放在从模型中获得的收益与成本之间。 建议监视机器学习管道的所有步骤的成本。 如果密切跟踪此信息,则企业可以就如何降低成本以及如何把握新机遇,或者某些管道是否不能提供足够的价值而做出明智的决定,而需要进行更改或关闭。
### 服务表现
......
......@@ -44,7 +44,7 @@ Zestimate 算法的确切细节是专有的,但是我们可以做一些假设
* **财产税**:如果财产税高,那将增加每月的还款额,房主将只能负担更便宜的房屋。
* **房屋颜色**:乍看之下,这似乎并不是一个相关变量,但是如果房屋涂成石灰绿色怎么办?
* **邮政编码**:位置,位置,位置。 在房地产中,房屋所在地是价格的重要决定因素。 在某些情况下,一个街区的房屋可能比下一个街区的房屋多几十万美元。 位置可能很重要。
* **可比较的销售额**:评估师和房地产经纪人通常用来评估房屋价值的一种指标是寻找与最近出售或至少列出的“标的”房地产相似的房地产 销售,以查看销售价格或当前的上市价格。
* **可比较的销售额**:评估师和房地产经纪人通常用来评估房屋价值的一种指标是寻找与最近出售或至少列出的“标的”房地产相似的房地产,以查看销售价格或当前的上市价格。
* **税收评估**:财产税是根据县目前认为财产的价值来计算的。 这是可公开访问的信息。
这些都可能是具有较高预测能力的变量,但直觉上我们可以假设平方英尺,卧室数量和浴室数量高度相关。 同样,从直觉上讲,平方英尺比卧室或浴室的数量更精确。 因此,我们可以减少卧室和浴室的数量,并保持平方英尺,而不会损失太多精度。 确实,我们可以通过降低噪声来提高准确性。
......@@ -242,7 +242,7 @@ g=sns.heatmap(data[top_corr_features].corr(),annot=True,cmap="RdYlGn")
更正式地讲,特征工程是数据科学家或计算机生成可增强机器学习模型的预测能力的特征的过程。 特征工程是机器学习中的一个基本概念,可能既困难又昂贵。 许多数据科学家希望直接跳入模型选择,但是辨别哪些新功能将增强模型的能力是一项关键技能,可能需要花费数年才能掌握。
更好的特征工程算法的发展目前正在紧锣密鼓地进行,有一天,在特征工程决策方面,这些特征可能会比高级数据科学家更好,但是,在接下来的几年中,我们预测优秀的数据科学家 仍会需求
更好的特征工程算法的发展目前正在紧锣密鼓地进行,有一天,在特征工程决策方面,这些特征可能会比高级数据科学家更好,但是,在接下来的几年中,我们预测仍会需要优秀的数据科学家
特征工程过程可以描述如下:
......@@ -613,7 +613,7 @@ print(data)
* 该月的前 5 天`= 1`
* 当月的前 5 天之后`= 0`
如果要求您预测餐厅的人流和销售情况,那么看每个月的 21 日可能没有任何流量模式,但是可以想象,如果 日期是星期日与星期二,或者月是 10 月与 12 月(例如圣诞节)。 如果这是一家国际连锁餐厅,那么餐厅位置和月份可能就非常重要(美国的圣诞节与印度的排灯节)。
如果要求您预测餐厅的人流和销售情况,那么看每个月的 21 日可能没有任何流量模式,但是可以想象,如果日期是星期日与星期二,或者月是 10 月与 12 月(例如圣诞节)。 如果这是一家国际连锁餐厅,那么餐厅位置和月份可能就非常重要(美国的圣诞节与印度的排灯节)。
可以操纵日期的其他可能方式包括:
......
......@@ -97,7 +97,7 @@ Binarized data:
[ 1\. 0\. 0.]]
```
如我们在这里看到的,`2.1`以上的所有值都变为`1`。 剩余值 变为`0`
如我们在这里看到的,`2.1`以上的所有值都变为`1`。 剩余值变为`0`
## 去除均值
......@@ -562,7 +562,7 @@ F1: 99.75%
该部分的代码在文件`naive_bayes.py`中给出。
# 混淆 矩阵
# 混淆矩阵
**混淆矩阵**是图形或用于描述分类器性能的表格。 矩阵中的每一行代表预测类中的实例,而每一列代表实际类中的实例。 之所以使用此名称,是因为如果模型混淆或错误标记了两个类别,则矩阵使可视化变得容易。 我们将每个类别与其他每个类别进行比较,看看有多少样本被正确分类或分类错误。
......
......@@ -287,7 +287,7 @@ plt.show()
这里,`p`是到数据点不属于的最近群集中各点的平均距离,`q`是到所有点的平均群集内距离在其自己的群集中。
轮廓分数范围的值在`-1``1`之间。 接近`1`的分数表示该数据点与群集中的其他数据点非常相似,而接近`-1`的分数指示该数据点与其他数据不同 点在集群中。 一种思考的方法是,如果有太多带有负轮廓分数的点,那么数据中的簇可能太少或太多。 我们需要再次运行聚类算法以找到最佳数目的聚类。 理想情况下,我们希望具有较高的正值。 根据业务问题,我们不需要优化并具有尽可能高的价值,但是通常,如果我们的剪影得分接近`1`,则表明数据可以很好地聚类。 如果分数接近`-1`,则表明我们用于分类的变量有噪声,并且不包含太多信号。
轮廓分数范围的值在`-1``1`之间。 接近`1`的分数表示该数据点与群集中的其他数据点非常相似,而接近`-1`的分数指示该数据点与集群中其他数据点不同。 一种思考的方法是,如果有太多带有负轮廓分数的点,那么数据中的簇可能太少或太多。 我们需要再次运行聚类算法以找到最佳数目的聚类。 理想情况下,我们希望具有较高的正值。 根据业务问题,我们不需要优化并具有尽可能高的价值,但是通常,如果我们的剪影得分接近`1`,则表明数据可以很好地聚类。 如果分数接近`-1`,则表明我们用于分类的变量有噪声,并且不包含太多信号。
让我们看看如何使用轮廓分数来估计聚类性能。 创建一个新的 Python 文件并导入以下软件包:
......@@ -393,7 +393,7 @@ plt.show()
图 7:最佳集群输出
在本节中,我们了解了轮廓分数以及它们如何帮助我们理解聚类。 现在,我们将学习高斯混合模型,这是简化和聚类数据的另一种无监督学习技术。
在本节中,我们了解了轮廓分数以及它们如何帮助我们理解聚类。 现在,我们将学习高斯混合模型,这是用于简化和聚类数据的另一种无监督学习技术。
# 什么是高斯混合模型?
......
......@@ -672,7 +672,7 @@ $ python3 collaborative_filtering.py --user "Clarissa Jackson"
图 9:用户相似度输出
在本节中,我们学习了如何在数据集中找到彼此相似的用户,以及如何分配分数来确定用户与另一个用户的相似程度。 在下一节中,我们将把它们放在一起并构建我们的建议 终结系统。
在本节中,我们学习了如何在数据集中找到彼此相似的用户,以及如何分配分数来确定用户与另一个用户的相似程度。 在下一节中,我们将把它们放在一起并构建我们的推荐系统。
# 建立电影推荐系统
......
......@@ -64,7 +64,7 @@
另一方面,要推断出某些东西,我们需要从一个推测开始。 证明是根据一组规则构造的。 计算过程是机械的,而演绎过程则更具创造性。
使用逻辑编程范例编写程序时,将基于有关问题域的事实和规则指定一组语句,然后求解器使用此信息 进行求解。
使用逻辑编程范例编写程序时,将基于有关问题域的事实和规则指定一组语句,然后求解器使用此信息进行求解。
# 了解逻辑编程的组成部分
......
......@@ -107,7 +107,7 @@ CSP 是数学上的问题,定义为一组必须满足一些约束的变量。
让我们看看如何使用贪婪搜索解决问题。 在此问题中,我们将尝试根据字母重新创建输入字符串。 我们将要求算法搜索解决方案空间并构建解决方案的路径。
在本章中,我们将使用名为`simpleai`的软件包。 它包含各种例程,这些例程可用于使用启发式搜索技术构建解决方案。 可在[这个页面](https://github.com/simpleai-team/simpleai)上获得。 为了使它在 Python3 中工作,我们需要对源代码进行一些更改。随同本书的代码一起提供了一个名为`simpleai.zip`的文件。 将此文件解压缩到名为`simpleai`的文件夹中。 此文件夹包含对原始库的所有必要更改,以使其能够在 Python3 中工作。将`simpleai`文件夹与您的代码位于同一文件夹中,并将置于您的代码中 顺利
在本章中,我们将使用名为`simpleai`的软件包。 它包含各种例程,这些例程可用于使用启发式搜索技术构建解决方案。 可在[这个页面](https://github.com/simpleai-team/simpleai)上获得。 为了使它在 Python3 中工作,我们需要对源代码进行一些更改。随同本书的代码一起提供了一个名为`simpleai.zip`的文件。 将此文件解压缩到名为`simpleai`的文件夹中。 此文件夹包含对原始库的所有必要更改,以使其能够在 Python3 中工作。将`simpleai`文件夹与您的代码位于同一文件夹中,你将能够顺利运行你的代码
创建一个新的 Python 文件并导入以下软件包:
......@@ -243,7 +243,7 @@ $ python3 greedy_search.py --input-string 'Artificial Intelligence with Python'
图 5:以非空初始状态运行时的代码输出
现在我们已经涵盖了一些流行的搜索技术,我们将继续使用这些搜索算法来解决 中的一些实际问题。
现在我们已经涵盖了一些流行的搜索技术,我们将继续使用这些搜索算法来解决一些实际问题。
# 解决约束问题
......
......@@ -763,7 +763,7 @@ if __name__ == "__main__":
图 10:演进进度最终输出
我们可以看到`min`列中的值越来越小,这表明方程的近似解的误差越来越小。
我们可以看到`min`列中的值越来越小,这表明方程的近似解的误差越来越小。
# 构建智能机器人控制器
......@@ -1201,7 +1201,7 @@ GP 算法广泛用于金融交易,时间序列预测和经济建模领域;
**多峰优化**:GA 是解决寻求多个最优解的多峰优化问题的好方法。
**旅行商问题(TSP)**:遗传算法已用于解决 TSP 及其所有相关应用,例如车辆路线和机器人轨迹问题,这是一种使用新颖交叉法和 包装策略
**旅行商问题(TSP)**:遗传算法已用于解决 TSP 及其所有相关应用,例如车辆路线和机器人轨迹问题,这是一种使用新颖交叉法和包装策略的广为人知的组合我呢提
希望 GP 和 GA 的广泛而多样的应用为您所熟悉。 也许您将能够提出自己独特的应用程序,并利用获得的知识来推动该领域的发展。
......
......@@ -62,7 +62,7 @@ AWS 还拥有一支由顾问组成的大军,致力于帮助其客户部署 AWS
传统的工作负载通常由传统上是 Microsoft 客户的客户在 Azure 上运行,并试图利用他们以前在该技术堆栈中的投资。
对于新的云部署,由于 Microsoft 为应用程序开发提供了强大的产品,专业的**平台即服务****PaaS**)功能,数据存储,机器,Azure 云服务之所以吸引人 学习和**物联网****IoT**)服务
对于新的云部署,由于 Microsoft 为应用程序开发提供了强大的产品,专业的**平台即服务****PaaS**)功能,数据存储,机器学习和**物联网****IoT**)服务,Azure 云服务吸引人们
在战略上致力于 Microsoft 技术堆栈的企业已经能够在生产中部署许多大型应用程序。 当开发人员完全致力于 Microsoft 产品套件(例如.NET 应用程序),然后将其部署在 Azure 上时,Azure 尤其有用。 微软之所以能够深入市场,是因为其经验丰富的销售人员和广泛的合作伙伴网络。
......@@ -562,7 +562,7 @@ Natural 语言 API 具有预先训练的模型,该模型使 API 的用户可
# 总结
在本章中,我们看到所有主要的技术公司都参与了高风险的军备竞赛,成为云计算的领军人物。 在计算的历史中,随着不同技术的出现,最常见的结果是让一个玩家主导整个空间,而其他所有竞争者都被放任其职。 云可能是计算历史上出现的最重要的技术。 当客户决定他们首选的云提供商是谁时,即使他们现在可能尚未意识到,他们正在做出决定,将他们锁定在该云提供商的生态系统中,并且很难从中摆脱出来并跳到另一个云提供商。
在本章中,我们看到所有主要的技术公司都参与了高风险的军备竞赛,成为云计算的领军人物。 在计算的历史中,随着不同技术的出现,最常见的结果是让一个玩家主导整个空间,而其他所有竞争者都被放任其职。 云可能是计算历史上出现的最重要的技术。 当客户决定他们首选的云提供商是谁时,即使他们现在可能尚未意识到,他们正在做出决定,将他们锁定在该云提供商的生态系统中,并且很难从中摆脱出来并跳到另一个云提供商。
云供应商意识到了这一点的重要性,并争相与竞争对手的能力相提并论。 当我们分析来自前三名云供应商的机器学习产品时,我们在本章中清楚地看到了这一点。 他们正在努力相互区分,同时在每种服务和功能上都力求彼此匹敌。 在未来几年内,这些云产品将如何发展以及这些供应商将提供哪些伟大的新服务,尤其是在人工智能和机器学习领域,将是令人兴奋的。
......
......@@ -302,7 +302,7 @@ if __name__=='__main__':
上面的屏幕快照显示了每个块的前 50 个字符。
现在,我们已经探索了将文本分割和分块的技术,让我们开始研究开始执行 文本分析的方法。
现在,我们已经探索了将文本分割和分块的技术,让我们开始研究执行文本分析的方法。
# 使用“词袋”模型提取词频
......@@ -960,4 +960,4 @@ if __name__=='__main__':
我们讨论了*词袋*模型,并为输入文本建立了文档术语矩阵。 然后,我们学习了如何使用机器学习对文本进行分类。 我们使用启发式方法构造了性别标识符。 我们还使用机器学习来分析电影评论的情感。 最后,我们讨论了主题建模并实现了一个用于识别给定文档中主题的系统。
在下一章中,我们将学习如何使用隐马尔可夫模型和 对顺序数据进行建模,然后使用它们来分析股市数据。
\ No newline at end of file
在下一章中,我们将学习如何使用隐马尔可夫模型对顺序数据进行建模,然后使用它们来分析股市数据。
\ No newline at end of file
......@@ -35,7 +35,7 @@
这种趋势只会继续加速。 当前,没有人将大多数聊天机器人对话与人类对话混淆。 但是随着它们在未来几年变得更好,它会变得更加自然和流畅。 当我们拨打呼叫中心时,有时至少是,打电话给我们的原因之一是抱怨或发泄,不仅能解决问题。 随着聊天机器人变得越来越好,他们将能够展示出我们所理解的同情和理解。 此外,他们将拥有对您以前所有通话的完全访问权限,并且能够通过记住先前对话的片段来发展历史并建立融洽的关系。
例如,聊天机器人很快就可以记住您提到孩子的名字,下次打电话时问您 Bobby 做得如何。 此外,就像现在一样,当您通过网络,电话应用程序等不同渠道与银行进行通信,或者与分行中的某人交谈时,聊天机器人将能够访问通过其他渠道输入的信息并使用 它可以为您提供更好,更快的服务。 再说一次,我们还没有到那儿,但是可能会有一天,我们宁愿打电话给客户服务,而不是使用其他渠道(如在线访问),因为这样会更快更有效。 举例来说,我确实发现自己越来越多地使用 Alexa,并且对她的功能和怪癖也越来越熟悉和熟悉。 我仍在努力使她动摇,但尚未实现。
例如,聊天机器人很快就可以记住您提到孩子的名字,下次打电话时问您 Bobby 做得如何。 此外,就像现在一样,当您通过网络,电话应用程序等不同渠道与银行进行通信,或者与分行中的某人交谈时,聊天机器人将能够访问并使用通过其他渠道输入的信息,可以为您提供更好,更快的服务。 再说一次,我们还没有到那儿,但是可能会有一天,我们宁愿打电话给客户服务,而不是使用其他渠道(如在线访问),因为这样会更快更有效。 举例来说,我确实发现自己越来越多地使用 Alexa,并且对她的功能和怪癖也越来越熟悉和熟悉。 我仍在努力使她动摇,但尚未实现。
不仅与 Alexa 一起,而且与其他智能家居助手一起,我们许多人使用它们来:
......
......@@ -247,7 +247,7 @@ plt.show()
图 4:使用月度滴答作图的数据(1998 年至 2006 年)
正如我们在上一节创建的图表(“图 1”和“图 2”)中看到的那样,它们很难阅读。 数据被“捆绑”。 通过使用每月刻度对数据进行切片,可以更轻松地可视化数据的起伏。 在下一节中,我们将继续学习 Pandas 库中可用的不同功能,例如过滤和求和,以及该功能如何帮助更好地分析和处理 数据集。
正如我们在上一节创建的图表(“图 1”和“图 2”)中看到的那样,它们很难阅读。 数据被“捆绑”。 通过使用每月刻度对数据进行切片,可以更轻松地可视化数据的起伏。 在下一节中,我们将继续学习 Pandas 库中可用的不同功能,例如过滤和求和,以及该功能如何帮助更好地分析和处理数据集。
# 对时间序列数据进行操作
......@@ -327,7 +327,7 @@ plt.show()
图 6:`dim1 < 45``dim2 > 30`的数据(1968 年-1975 年)
第三个屏幕截图显示了求和结果:
第三个屏幕截图显示了求和结果:
![](img/B15441_17_07.png)
......
......@@ -29,9 +29,9 @@
**自动图像分类**:我们可以在 Google 相册中以及在将图像上传到 Facebook 以及查看 Facebook 如何向我们提供有关图像中人物的建议时看到的第一手示例。
**反向图像搜索**:Google 除其他功能外,还提供功能,您可以将图像用作输入,而不是使用关键字作为输入并获取图像,而 Google 可以猜测 图片包含[您可以在这里尝试](httpsimg.google.com/)
**反向图像搜索**:Google 除其他功能外,还提供功能,您可以将图像用作输入,而不是使用关键字作为输入并获取图像,而 Google 可以猜测图片内容[您可以在这里尝试](httpsimg.google.com/)
**光学字符识别**:将 图像转换为文本非常依赖于图像识别。
**光学字符识别**:将图像转换为文本非常依赖于图像识别。
**MRI 和超声解释**:在识别癌症和其他疾病方面,某些工具的性能优于人类。
......@@ -57,7 +57,7 @@ OpenCV 可以与 TensorFlow,PyTorch 和 Caffe 结合使用。
帧差分是可用于识别视频中运动部分的最简单技术之一。 直观地,在大多数应用程序中,这是有趣的部分所在。 如果我们有一个跑步者的视频,我们可能想分析跑步者的跑步情况,而不是背景图像。 当我们看电影时,我们主要关注最前沿的人物在说话和做事时。 我们不会倾向于关注背景中无聊的相框。
有时候,您会发现一个单身的怪胎会在隐藏在这种背景下的电影中发现问题,正如我们在*权力游戏*的最新情节中几次看到有人在杯子里发现星巴克时那样 背景,但这是例外而不是规则。
有时候,您会发现一个一次性的极客,会在隐藏在这种背景下的电影中发现问题,正如我们在《权力的游戏》的最新情节中几次看到,有人在背景中发现一杯星巴克,但这是例外而不是规则。
当我们观看实时视频流时,从该流捕获的连续帧之间的差异为我们提供了很多信息。 让我们看看如何获​​取连续帧之间的差异并显示差异。 本节中的代码需要连接的摄像头,因此请确保您的计算机上装有摄像头。
......@@ -272,7 +272,7 @@ if __name__=='__main__':
mask = cv2.inRange(hsv, lower, upper)
```
计算蒙版和原始图像之间的按位与:
计算遮罩和原始图像之间的按位与:
```py
# Bitwise-AND between the mask and original image
......@@ -316,13 +316,13 @@ if __name__=='__main__':
图 2:捕获的帧
标题为**输出**的第二个窗口显示 皮肤蒙版
标题为**输出**的第二个窗口显示皮肤遮罩
![](img/B15441_18_03.png)
图 3:输出框架
如您在中看到的输出帧,我们现在只在图像中看到一种颜色,它对应于任何皮肤。 其他一切都是黑色的。 与上一节中看到的类似,我们对图像进行了过滤,以仅包含我们感兴趣的信息。在这种情况下,过滤是不同的,但结果是事实是我们现在仅具有所需的信息 进一步处理图像。 我想到了一些应用程序:
如您在中看到的输出帧,我们现在只在图像中看到一种颜色,它对应于任何皮肤。 其他一切都是黑色的。 与上一节中看到的类似,我们对图像进行了过滤,以仅包含我们感兴趣的信息。在这种情况下,过滤是不同的,但结果是事实是我们现在仅具有进一步处理图像所需的信息。 我想到了一些应用程序:
* 检测异常皮肤状况或变色。
* 仅在看到人的肤色时才会打开的安全系统。 这可用于人类可能藏在容器中的港口。
......@@ -659,7 +659,7 @@ class ObjectTracker(object):
self.track_window = (x0, y0, x1-x0, y1-y0)
```
从 HSV 图像以及蒙版中提取感兴趣的区域。 根据以下这些计算感兴趣区域的直方图:
从 HSV 图像以及遮罩中提取感兴趣的区域。 根据以下这些计算感兴趣区域的直方图:
```py
# Extract the regions of interest
......@@ -968,7 +968,7 @@ def start_tracking():
cv2.circle(mask, (x, y), 6, 0, -1)
```
使用内置函数以及蒙版,最大拐角,质量级别,最小距离和块大小等参数,计算要跟踪的良好功能:
使用内置函数以及遮罩,最大拐角,质量级别,最小距离和块大小等参数,计算要跟踪的良好功能:
```py
# Compute good features to track
......
......@@ -160,7 +160,7 @@ plt.show()
图 3:训练误差图
我们可以从前面的屏幕截图中观察到,在第四个时期结束时,错误降至`0`,这正是我们想要发生的情况。 如果错误为`0`,则无法进一步改善。 在下一部分中,我们将增强模型并创建单层神经 网络。
我们可以从前面的屏幕截图中观察到,在第四个时期结束时,错误降至`0`,这正是我们想要发生的情况。 如果错误为`0`,则无法进一步改善。 在下一部分中,我们将增强模型并创建单层神经网络。
# 构建单层神经网络
......
......@@ -308,7 +308,7 @@ for step in range(num_iterations):
图 11:历元的最终输出
我们可以看到`w``b`的值是如何不断调整的,我们还可以看到损失如何持续减小直到损失很小的程度,以至于我们不再看到它减小。 有趣的是,我们能够很快取得良好的结果,但是我们为我们的网络解决了一个相当简单的问题。 让我们 崭露头角
我们可以看到`w``b`的值是如何不断调整的,我们还可以看到损失如何持续减小直到损失很小的程度,以至于我们不再看到它减小。 有趣的是,我们能够很快取得良好的结果,但是我们为我们的网络解决了一个相当简单的问题。 让我们开始吧
# 使用单层神经网络构建图像分类器
......
......@@ -23,7 +23,7 @@ RNN 是另一种流行的模型,目前正在获得很大的关注。 正如我
RNN 背后的数学有时可能会令人不知所措。 在深入研究 RNN 之前,请牢记以下思想:赛车手不需要完全了解其赛车的机械原理即可使其快速行驶并赢得比赛。 同样,我们不一定需要完全了解 RNN 在幕后的工作方式,以使其对我们有用,有时甚至是令人印象深刻的工作。 Keras 库的创建者 Francois Chollet 描述了**长短期记忆****LSTM**)网络,这是 RNN 的一种形式,如下所示:
> “您不需要了解有关 LSTM 单元的特定架构的所有内容;作为人类,理解它不是您的工作。只需记住 LSTM 单元的含义:允许过去的信息 以后再注射。”
> “您不需要了解有关 LSTM 单元的特定架构的所有内容;作为人类,理解它不是您的工作。只需记住 LSTM 单元的含义:允许过去的信息以后再注入。”
现在让我们进入神经网络的一些基础知识。 顾名思义,*神经网络*从大脑神经元的结构中获得灵感。 神经网络中的神经元大致模拟了人类神经元的结构和功能。 对于一般的大脑,尤其是神经元,我们有很多不了解的地方。 但在基本级别上,神经元接受输入,并且如果达到阈值,它将触发输出。 用数学术语来说,*人工*神经元是数学函数的容器,其唯一的任务是通过将给定的输入应用于函数来传递输出。
......
......@@ -188,7 +188,7 @@ $ python3 run_environment.py --input-env mountaincar
图 7:山地车示例输出 2
它将保持更大的步幅,如下图 所示:
它将保持更大的步幅,如下图所示:
![](img/B15441_22_08.png)
......
......@@ -17,7 +17,7 @@
# 大数据基础
是您今天定期进行的一项活动,而您十年前很少做,而且肯定二十年前从未做过。 但是,如果被告知您再也做不到,您会感到完全受阻。 您可能已经在今天或至少在本周进行了几次。 我在说什么 想猜一猜吗? 我说的是执行 Google 搜索。
是您今天定期进行的一项活动,而您十年前很少做,而且肯定二十年前从未做过。 但是,如果被告知您再也做不到,您会感到完全受阻。 您可能已经在今天或至少在本周进行了几次。 想猜一猜我在说什么吗? 我说的是执行 Google 搜索。
Google 已经存在了很短的时间,但是现在我们非常依赖它。 它扰乱并颠覆了包括杂志出版,电话簿,报纸等在内的众多行业。 如今,每当我们遇到知识难题时,我们都会用 Google 抓它。 由于我们通过手机永久链接到互联网,因此尤其如此。 Google 几乎已经成为我们的延伸。
......@@ -215,7 +215,7 @@ Google 的工作方式与图书馆卡目录类似,不同之处在于 Google
在欺诈这个话题上,有趣的是,亚马逊在其 2019 年 re:Invent 会议上宣布了一项名为 **Fraud Detector** 的新服务。 它使用了与 Amazon 用来捕获欺诈的相同技术,并允许该服务的用户在自己的操作和交易中防止欺诈。 有关服务的更多信息,[可以在这里找到](https://aws.amazon.com/fraud-detector/)
在前面的部分中,我们了解了大数据技术本身是如何强大的。 本节的重点是要理解机器学习是大数据集群可以成功进行并以大规模并行方式处理的工作负载之一。 许多大数据堆栈(例如 Hadoop 堆栈)具有内置的机器学习组件(例如 Mahout),但是我们不限于仅使用这些组件来训练机器学习模型。 这些堆栈可以与其他同类最佳的 ML 库结合使用,例如 Scikit-Learn,Theano,Torch,Caffe 和 TensorFlow。 现在我们已经讨论了大数据如何帮助我们创建机器学习模型,让我们进一步了解一些当今最流行的大 数据工具。
在前面的部分中,我们了解了大数据技术本身是如何强大的。 本节的重点是要理解机器学习是大数据集群可以成功进行并以大规模并行方式处理的工作负载之一。 许多大数据堆栈(例如 Hadoop 堆栈)具有内置的机器学习组件(例如 Mahout),但是我们不限于仅使用这些组件来训练机器学习模型。 这些堆栈可以与其他同类最佳的 ML 库结合使用,例如 Scikit-Learn,Theano,Torch,Caffe 和 TensorFlow。 现在我们已经讨论了大数据如何帮助我们创建机器学习模型,让我们进一步了解一些当今最流行的大数据工具。
## Apache Hadoop
......
......@@ -78,11 +78,11 @@ GAN 具有一些相当有用的实际应用,其中包括:
* **图像生成**:生成器网络在经过样本图像训练后,可用于生成逼真的图像。 例如,如果我们要生成新的狗图像,则可以在狗的图像的数千个样本上训练 GAN。 训练完成后,生成器网络将能够生成与训练集中的图像不同的新图像。 图像生成用于市场营销,徽标生成,娱乐,社交媒体等。 在下一章中,我们将生成动漫人物的面孔。
* **文本到图像的合成**:从文本描述生成图像是 GAN 的一个有趣用例。 由于 GAN 能够根据您编写的某些文本生成新数据,因此在电影行业中可能会有所帮助。 在漫画行业,可以自动生成故事序列。
* **面部老化**:对于娱乐和监视行业都非常有用。 这对于面部验证特别有用,因为这意味着 公司不需要随着 人的变老而更改其安全系统。 age-cGAN 网络可以生成不同年龄的图像,然后可以将其用于训练用于面部验证的鲁棒模型。
* **图像到图像的转换**:图像到图像的转换可用于将白天拍摄的图像转换为夜晚拍摄的图像,并将草图转换为绘画 ,以将图像的样式设置为类似于毕加索或梵高的绘画,将航空图像自动转换为卫星图像 ,并转换为 将马的图像转换为斑马的图像。 这些用例具有突破性,因为它们可以节省我们的时间。
* **面部老化**:对于娱乐和监视行业都非常有用。 这对于面部验证特别有用,因为这意味着公司不需要随着人的变老而更改其安全系统。 age-cGAN 网络可以生成不同年龄的图像,然后可以将其用于训练用于面部验证的鲁棒模型。
* **图像到图像的转换**:图像到图像的转换可用于将白天拍摄的图像转换为夜晚拍摄的图像,并将草图转换为绘画 ,以将图像的样式设置为类似于毕加索或梵高的绘画,将航空图像自动转换为卫星图像 ,并将马的图像转换为斑马的图像。 这些用例具有突破性,因为它们可以节省我们的时间。
* **视频合成**: GAN 也可以用于生成视频。 与我们手动创建内容相比,它们可以在更少的时间内生成内容。 它们可以提高电影创作者的工作效率,还可以使想在业余时间制作创意视频的业余爱好者获得支持。
* **高分辨率图像生成**:如果使用低分辨率相机拍摄照片,GAN 可以帮助您生成高分辨率图像而不会丢失任何基本细节。 这在网站上可能很有用。
* **补全图像的缺失部分**:如果 您的图像中有些缺失的部分,GAN 可以帮助您恢复这些部分。
* **补全图像的缺失部分**:如果您的图像中有些缺失的部分,GAN 可以帮助您恢复这些部分。
......@@ -129,7 +129,7 @@ GAN 的架构具有两个基本元素:生成器网络和判别器网络。 每
* 第二密集层生成形状为`[batch_size, 500]`的张量。
* 第三隐藏层生成`[batch_size, 784]`形状的张量。
* 在最后一个输出层中,该张量从`[batch_size, 784]`的形状改成`[batch_size, 28, 28]`的形状。 这意味着 我们的网络将生成一批图像,其中一个图像的形状为`[28, 28]`
* 在最后一个输出层中,该张量从`[batch_size, 784]`的形状改成`[batch_size, 28, 28]`的形状。 这意味着我们的网络将生成一批图像,其中一个图像的形状为`[28, 28]`
......@@ -141,7 +141,7 @@ GAN 的架构具有两个基本元素:生成器网络和判别器网络。 每
我们 GAN 中的判别器是前馈神经网络,它具有五层,包括一个输入层和一个输出层,以及三个密集层。 判别器网络是一个分类器,与生成器网络略有不同。 它处理图像并输出该图像属于特定类别的概率。
下图显示了 判别器网络中每一层的张量流以及张量的输入和输出形状:
下图显示了判别器网络中每一层的张量流以及张量的输入和输出形状:
![](img/5577e65f-d54f-48ad-9f22-950a7abf3c36.png)
......@@ -192,7 +192,7 @@ GAN 的架构具有两个基本元素:生成器网络和判别器网络。 每
**Jensen-Shannon** 散度(也称为**信息半径****IRaD**)或**总散度与平均值**)是两个概率分布之间相似度的另一种度量。 它基于 KL 散度。 但是,与 KL 散度不同,JS 散度本质上是对称的,可用于测量两个概率分布之间的距离。 如果我们采用 Jensen-Shannon 发散的平方根,则会得到 Jensen-Shannon 距离,因此它是距离度量。
以下 等式表示两个概率分布`p``q`之间的 Jensen-Shannon 散度:
以下等式表示两个概率分布`p``q`之间的 Jensen-Shannon 散度:
![](img/ce0afe99-4137-4673-985a-b073ab66c347.png)
......@@ -232,7 +232,7 @@ GAN 的架构具有两个基本元素:生成器网络和判别器网络。 每
在前面的等式中,`D(x)`是判别器模型,`G(z)`是生成器模型,`P(x)`是实际数据分布,`P(z)`是生成器生成的数据的分布,`E`是预期的输出。
在训练期间,`D`**判别器**)想要使整个输出最大化,而`G`(生成器)希望使整个输出最小化,从而训练 GAN 达到平衡 生成器和判别器网络。 当它达到平衡时,我们说模型已经收敛。 这个平衡就是纳什平衡。 训练完成后,我们将获得一个生成器模型,该模型能够生成逼真的图像。
在训练期间,`D`**判别器**)想要使整个输出最大化,而`G`(生成器)希望使整个输出最小化,从而训练 GAN 使生成器和判别器网络达到平衡。 当它达到平衡时,我们说模型已经收敛。 这个平衡就是纳什平衡。 训练完成后,我们将获得一个生成器模型,该模型能够生成逼真的图像。
......@@ -395,7 +395,7 @@ pix2pix 网络是由 Phillip Isola,朱俊彦,周廷辉和 Alexei A. Efros
模式崩溃是指生成器网络生成变化不大的样本或模型开始生成相同图像的情况。 有时,概率分布实际上是多峰的,非常复杂。 这意味着它可能包含来自不同观察值的数据,并且对于样品的不同子图可能具有多个峰。 有时,GAN 不能为数据的多峰概率分布建模,并且会遭受模式崩溃。 所有生成的样本实际上都相同的 情况称为完全崩溃。
模式崩溃是指生成器网络生成变化不大的样本或模型开始生成相同图像的情况。 有时,概率分布实际上是多峰的,非常复杂。 这意味着它可能包含来自不同观察值的数据,并且对于样品的不同子图可能具有多个峰。 有时,GAN 不能为数据的多峰概率分布建模,并且会遭受模式崩溃。 所有生成的样本实际上都相同的情况称为完全崩溃。
我们可以使用许多方法来克服模式崩溃问题。 其中包括:
......@@ -415,7 +415,7 @@ pix2pix 网络是由 Phillip Isola,朱俊彦,周廷辉和 Alexei A. Efros
如果我们使用基于梯度的优化方法训练更大的网络,此问题将变得更加严重。 当我们少量改变参数值时,基于梯度的优化方法通过计算网络输出的变化来优化参数值。 如果参数值的变化导致网络输出的微小变化,则权重变化将非常小,因此网络将停止学习。
当我们使用 Sigmoid 和 Tanh 等 培养功能时,这也是一个问题。 乙状结肠激活函数将值限制在 0 到 1 之间,将`x`的大值转换为大约 1,将`x`的小值或负值转换为大约零。 Tanh 激活函数将输入值压缩为 -1 和 1 之间的范围,将大输入值转换为大约 1,将小值转换为大约负 1。当应用反向传播时,我们使用微分链式规则, 有倍增作用。 当我们到达网络的初始层时,梯度(误差)呈指数下降,从而导致梯度消失。
当我们使用 Sigmoid 和 Tanh 等激活函数时,这也是一个问题。 乙状结肠激活函数将值限制在 0 到 1 之间,将`x`的大值转换为大约 1,将`x`的小值或负值转换为大约零。 Tanh 激活函数将输入值压缩为 -1 和 1 之间的范围,将大输入值转换为大约 1,将小值转换为大约负 1。当应用反向传播时,我们使用微分链式规则, 有倍增作用。 当我们到达网络的初始层时,梯度(误差)呈指数下降,从而导致梯度消失。
为了克服这个问题,我们可以使用激活函数,例如 ReLU,LeakyReLU 和 PReLU。 这些激活函数的梯度在反向传播期间不会饱和,从而导致神经网络的有效训练。 另一种解决方案是使用批处理规范化,该规范化将对网络隐藏层的输入规范化。
......
......@@ -760,7 +760,7 @@ generated_volumes = generator.predict(z_sample, verbose=3)
要可视化 训练的损失,请按如下所示启动,,,,`tensorboard`,,服务器。
要可视化训练的损失,请按如下所示启动`tensorboard`服务器。
```py
tensorboard --logdir=logs
......
......@@ -56,7 +56,7 @@ cGAN 的训练目标函数可以表示为:
用于面部老化的 cGAN 的架构稍微复杂一些。 Age-cGan 由四个网络组成:编码器,FaceNet,生成器网络和判别器网络。 使用编码器,我们可以利用潜在的向量`z[0]`来学习输入面部图像和年龄条件的逆映射。 FaceNet 是面部识别网络,用于学习输入图像`x`与重构的图像`x_tide`之间的差异。 我们有一个生成器网络,该网络使用由人脸图像和条件向量组成的隐藏表示并生成图像。 判别器网络将区分真实图像和伪图像。
cGAN 的问题在于它们无法学习将属性`y` 输入图像`x`逆映射到潜向量`z`的任务。解决此问题的方法是使用编码器网络。 我们可以训练一个编码器网络来近似输入图像`x`的逆映射。 在本节中,我们将探讨 Age-cGAN 涉及的网络。
cGAN 的问题在于它们无法学习将属性`y`的输入图像`x`逆映射到潜向量`z`的任务。解决此问题的方法是使用编码器网络。 我们可以训练一个编码器网络来近似输入图像`x`的逆映射。 在本节中,我们将探讨 Age-cGAN 涉及的网络。
......@@ -352,7 +352,7 @@ from scipy.io import loadmat
编码器网络是**卷积神经网络****CNN**),可将图像(`x`)编码为潜向量(`z`)或 潜在的向量表示。 让我们从在 Keras 框架中实现编码器网络开始。
编码器网络是**卷积神经网络****CNN**),可将图像(`x`)编码为潜向量(`z`)或潜在的向量表示。 让我们从在 Keras 框架中实现编码器网络开始。
执行以下步骤来实现编码器网络:
......@@ -1224,7 +1224,7 @@ encoder.save_weights("encoder.h5")
在前面的两个步骤中,我们成功地训练了生成器网络,判别器网络和编码器网络。 在本节中,我们将改进编码器和生成器网络。 在这些步骤中,我们将使用**人脸识别****FR**)网络,该网络会生成输入给它的特定输入的 128 维嵌入,以改善生成器和编码器 网络。
在前面的两个步骤中,我们成功地训练了生成器网络,判别器网络和编码器网络。 在本节中,我们将改进编码器和生成器网络。 在这些步骤中,我们将使用**人脸识别****FR**)网络,该网络会生成输入给它的特定输入的 128 维嵌入,以改善生成器和编码器网络。
执行以下步骤:
......
......@@ -422,7 +422,7 @@ gen_model.add(Activation('tanh'))
gen_model.add(UpSampling2D(size=(2, 2)))
```
2D 上采样层 将张量 的行和列分别以[0]和[1]的大小重复 。
2D 上采样层将张量的行和列分别以`[0]``[1]`的大小重复 。
8. 接下来,在第二个 2D 卷积层上添加 `64` 过滤器和,将`(5, 5)`**核大小**`tanh`作为激活函数:
......@@ -840,7 +840,7 @@ print("g_loss:", g_loss)
save_rgb_img(img, "results/one_{}.png".format(epoch))
```
这些 图像将帮助您决定是继续训练还是尽早停止训练。 如果生成的高分辨率图像的质量良好,请停止训练。 或者继续训练,直到您的模型变好为止。
这些图像将帮助您决定是继续训练还是尽早停止训练。 如果生成的高分辨率图像的质量良好,请停止训练。 或者继续训练,直到您的模型变好为止。
我们已经成功地在动画角色数据集上训练了 DCGAN 网络。 现在我们可以使用该模型生成动漫人物图像。
......
......@@ -25,8 +25,8 @@
与其他 GAN 一样,SRGAN 包含一个生成器网络和一个判别器网络。 两个网络都很深。 这两个网络的功能指定如下:
* **生成器**:生成器网络拍摄尺寸为`64x64x3`的低分辨率图像,并且在一系列卷积和上采样层之后, 生成超分辨率 形状为`256x256x3`图片
* **判别器**:判别器网络拍摄高分辨率图像,并尝试识别给定的图像是真实的(来自真实数据样本)还是伪造的(由 生成器)
* **生成器**:生成器网络拍摄尺寸为`64x64x3`的低分辨率图像,并且在一系列卷积和上采样层之后, 生成形状为`256x256x3`的超分辨率图片
* **判别器**:判别器网络拍摄高分辨率图像,并尝试识别给定的图像是真实的(来自真实数据样本)还是(由生成器)伪造的
......@@ -527,7 +527,7 @@ def build_generator():
我们已经在“使用 Keras 框架的函数式 API 创建 Keras 模型”中探讨了判别器网络的架构。 让我们 首先在 Keras 框架中编写判别器网络的层。
我们已经在“使用 Keras 框架的函数式 API 创建 Keras 模型”中探讨了判别器网络的架构。 让我们首先在 Keras 框架中编写判别器网络的层。
执行以下步骤以在 Keras 中实现判别器网络:
......@@ -949,7 +949,7 @@ high_resolution_images, low_resolution_images =
batch_size=batch_size,low_resolution_shape=low_resolution_shape, high_resolution_shape=high_resolution_shape)
```
`sample_images` 功能 的代码如下。 它具有很强的描述性,通过阅读可以理解。 它包含加载和调整图像大小并生成高分辨率和低分辨率图像的不同步骤:
`sample_images`函数的代码如下。 它具有很强的描述性,通过阅读可以理解。 它包含加载和调整图像大小并生成高分辨率和低分辨率图像的不同步骤:
```py
def sample_images(data_dir, batch_size, high_resolution_shape, low_resolution_shape):
......
......@@ -4,7 +4,7 @@
文本到图像的合成是**生成对抗网络****GAN**)的用例之一,它具有许多工业应用,就像前面章节中描述的 GAN 一样。 从文本描述中合成图像非常困难,因为要构建可以生成反映文本含义的图像的 模型非常困难。 一个试图解决这个问题的网络是 StackGAN。 在本章中,我们将使用 TensorFlow 作为后端在 Keras 框架中实现 StackGAN。
文本到图像的合成是**生成对抗网络****GAN**)的用例之一,它具有许多工业应用,就像前面章节中描述的 GAN 一样。 从文本描述中合成图像非常困难,因为要构建可以生成反映文本含义的图像的模型非常困难。 一个试图解决这个问题的网络是 StackGAN。 在本章中,我们将使用 TensorFlow 作为后端在 Keras 框架中实现 StackGAN。
在本章中,我们将介绍以下主题:
......@@ -24,7 +24,7 @@
之所以这样称呼 StackGAN,是因为它具有两个 GAN,这些 GAN 堆叠在一起形成了一个能够生成高分辨率图像的网络。 它分为两个阶段,第一阶段和第二阶段。第一阶段网络生成具有基本颜色和粗略草图的低分辨率图像,并以文本嵌入为条件;而第二阶段网络获取由第一阶段网络生成的图像,并生成以条件为基础的高分辨率图像 文字嵌入。 基本上,第二个网络会纠正缺陷并添加引人注目的细节,从而产生更逼真的高分辨率图像。
之所以这样称呼 StackGAN,是因为它具有两个 GAN,这些 GAN 堆叠在一起形成了一个能够生成高分辨率图像的网络。 它分为两个阶段,第一阶段和第二阶段。第一阶段网络生成具有基本颜色和粗略草图的低分辨率图像,并以文本嵌入为条件;而第二阶段网络获取由第一阶段网络生成的图像,并生成以文字嵌入为条件的高分辨率图像。 基本上,第二个网络会纠正缺陷并添加引人注目的细节,从而产生更逼真的高分辨率图像。
我们可以将 StackGAN 网络与画家的作品进行比较。 当画家开始工作时,他们会绘制原始形状,例如线条,圆形和矩形。 然后,他们尝试填充颜色。 随着绘画的进行,越来越多的细节被添加。 在 StackGAN 中,第一阶段与绘制基本形状有关,而第二阶段与校正由第一阶段网络生成的图像中的缺陷有关。第二阶段还添加了更多细节,以使图像看起来更逼真。 这两个阶段的生成器网络都是**条件生成对抗网络****CGAN**)。 第一个 GAN 以文本描述为条件,而第二网络以文本描述和第一个 GAN 生成的图像为条件。
......@@ -97,7 +97,7 @@ StackGAN 是一个两阶段的网络。 每个阶段都有两个生成器和两
从文本编码器获得文本嵌入(`φ[t]`)后,将它们馈送到完全连接的层以生成诸如平均值`μ[0]`和标准偏差`σ[0]`的值。然后使用这些值 通过将`σ[0]`放置在矩阵(`∑(φ[t])`)的对角线上来创建对角协方差矩阵。 最后,我们使用`μ[0]``∑[0]`创建高斯分布,可以表示为:
从文本编码器获得文本嵌入(`φ[t]`)后,将它们馈送到完全连接的层以生成诸如平均值`μ[0]`和标准偏差`σ[0]`的值。然后使用这些值通过将`σ[0]`放置在矩阵(`∑(φ[t])`)的对角线上来创建对角协方差矩阵。 最后,我们使用`μ[0]``∑[0]`创建高斯分布,可以表示为:
![](img/bcc5921a-1e7e-497a-b134-61a55d04cecb.png)
......@@ -186,9 +186,9 @@ StackGAN 的第一阶段中使用了两个损失,如下所示:
第二阶段 StackGAN 的主要组件是生成器网络和判别器网络。 生成器网络是编码器-解码器类型的网络。 在此阶段不使用随机噪声`z`,假设`s[0]`已保留了随机性,其中`s[0]`生成器网络生成的图像 第一阶段
第二阶段 StackGAN 的主要组件是生成器网络和判别器网络。 生成器网络是编码器-解码器类型的网络。 在此阶段不使用随机噪声`z`,假设`s[0]`已保留了随机性,其中`s[0]`第一阶段的生成器网络生成的图像。
我们首先使用预训练的文本编码器生成高斯条件变量`c_hat`。 这将生成嵌入`φ[t]`的相同文本。 第一阶段和第二阶段条件增强具有不同的完全连接层,用于生成不同的均值和标准差。 这意味着第二阶段 GAN 学会了在文本嵌入中捕获有用的信息,而这些信息被第一阶段 GAN 省略了。
我们首先使用预训练的文本编码器生成高斯条件变量`c_hat`。 这将生成嵌入`φ[t]`的相同文本。 第一阶段和第二阶段条件增强具有不同的完全连接层,用于生成不同的均值和标准差。 这意味着第二阶段 GAN 学会了在文本嵌入中捕获有用的信息,而这些信息被第一阶段 GAN 省略了。
第一阶段 GAN 生成的图像存在的问题是,它们可能缺少生动的对象部分,它们可能包含形状失真,并且它们可能会忽略对于生成逼真的图像非常重要的重要细节。 第二阶段 GAN 建立在第一阶段 GAN 的输出上。 第二阶段 GAN 取决于第一阶段 GAN 生成的低分辨率图像和文本描述。 它通过校正缺陷产生高分辨率的图像。
......@@ -224,7 +224,7 @@ StackGAN 的第一阶段中使用了两个损失,如下所示:
类似于生成器网络,判别器网络是一个深度卷积神经网络,并且包含额外的下采样层,因为图像的大小比第一阶段中的判别器网络大。 判别器是一个可识别匹配的判别器(有关更多信息,[请参见以下链接](https://arxiv.org/pdf/1605.05396.pdf),它使我们可以更好地实现 图片和条件文字。 在训练期间,判别器将真实图像及其对应的文本描述作为正样本对,而负样本对则由两组组成。 第一组是具有不匹配的文本嵌入的真实图像,而第二组是具有相应的文本嵌入的合成图像。 让我们看一下判别器网络的架构,如下图所示:
类似于生成器网络,判别器网络是一个深度卷积神经网络,并且包含额外的下采样层,因为图像的大小比第一阶段中的判别器网络大。 判别器是一个可识别匹配的判别器(有关更多信息,[请参见以下链接](https://arxiv.org/pdf/1605.05396.pdf),它使我们可以更好地实现图片和条件文本的对齐。 在训练期间,判别器将真实图像及其对应的文本描述作为正样本对,而负样本对则由两组组成。 第一组是具有不匹配的文本嵌入的真实图像,而第二组是具有相应的文本嵌入的合成图像。 让我们看一下判别器网络的架构,如下图所示:
![](img/a8c04bff-bd5a-4350-8b08-bd2ef6ae193b.png)
......
......@@ -101,7 +101,7 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架
| 批量标准化层 | `axis=3, momentum=0.9, epsilon=1e-5` | `(32, 32, 128)` | `(32, 32, 128)` |
| 加法层 | `None` | `(32, 32, 128)` | `(32, 32, 128)` |
加法层计算输入到块的 张量 与最后一批归一化层的输出之和。
加法层计算输入到块的张量与最后一个批量归一化层的输出之和。
* **上采样块**:上采样块包含 2D 转置卷积层,并使用`relu`作为激活函数。 生成器网络中有两个上采样模块。 第一个上采样模块的配置如下:
......@@ -187,7 +187,7 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架
![](img/f278fd84-eb49-4d88-a98e-31396fe4ea3a.png)
在此,`x`是来自分布`A`的一个域的图像,`y`是来自分布`B`的另一个域的图像。判别器`D[y]`试图区分`G`映射(`G(x)`)生成的图像和来自不同的分布`B`的真实图像`y`。判别器`D[x]`试图区分`F`映射生成的图像(`F(y)`)和来自分布`A`的真实图像`x``G`的目的是使对抗损失函数最小 对抗对手`D`,后者不断尝试使其最大化。
在此,`x`是来自分布`A`的一个域的图像,`y`是来自分布`B`的另一个域的图像。判别器`D[y]`试图区分`G`映射(`G(x)`)生成的图像和来自不同的分布`B`的真实图像`y`。判别器`D[x]`试图区分`F`映射生成的图像(`F(y)`)和来自分布`A`的真实图像`x``G`的目的是使对抗损失函数`D`最小,后者不断尝试使其最大化。
......@@ -829,7 +829,7 @@ tensorboard.set_model(discriminatorA)
tensorboard.set_model(discriminatorB)
```
创建一个包含所有等于 1 的值的 4 维数组,该数组表示真实标签。 同样,创建另一个所有值均等于零的三维数组,其中 代表伪标签,如下所示:
创建一个包含所有等于 1 的值的 4 维数组,该数组表示真实标签。 同样,创建另一个所有值均等于零的三维数组,代表伪标签,如下所示:
```py
real_labels = np.ones((batch_size, 7, 7, 1))
......
......@@ -212,7 +212,7 @@ Pix2pix 是一个条件生成对抗网络,并且用于条件 GAN 的目标函
![](img/a2a19bc3-64c1-48bd-b2d8-4b1303293dce.png)
在这里,网络`G`(生成器)正试图使针对对手`D`(判别器)的先前功能最小化,而对手`D`则试图使先前的功能最大化 功能
在这里,网络`G`(生成器)正试图使针对对手`D`(判别器)的先前功能最小化,而对手`D`则试图使先前的功能最大化。
如果必须比较朴素 GAN 和条件 GAN 的目标函数,则朴素 GAN 的目标函数如下:
......@@ -1040,7 +1040,7 @@ for row_idx in row_idx_list:
output_shape=input_img_dim)(generated_images))
```
5. 冻结了判别器网络的训练,因为我们不想训练 判别器网络:
5. 冻结了判别器网络的训练,因为我们不想训练判别器网络:
```py
discriminator.trainable = False
......
......@@ -32,7 +32,7 @@
第 4 章,“实用的分层聚类”完全致力于可以根据特定标准计算完整聚类层次的一系列算法。 分析了最常见的策略,以及可以提高方法有效性的特定性能指标和算法变体。
第 5 章,“软聚类和高斯混合模型”着重介绍了几种著名的软聚类算法,特别着重于高斯混合,这允许定义生成式 模型在相当合理的假设下
第 5 章,“软聚类和高斯混合模型”着重介绍了几种著名的软聚类算法,特别着重于高斯混合,这允许在相当合理的假设下定义生成式模型
第 6 章,“异常检测”讨论了无监督学习的一种特殊应用:新颖性和异常检测。 目的是分析一些可以有效使用的常用方法,以了解新样本是否可以被视为有效样本,还是需要特别注意的异常样本。
......
......@@ -4,7 +4,7 @@
在本章中,我们将介绍基本的机器学习概念,即 ,前提是您具有一些统计学习和概率论的基本知识 。 您将了解机器学习技术的使用以及逻辑过程,这些逻辑过程将增进我们对数据集 的性质和属性的了解。 整个过程的目的是建立可支持业务决策的描述性和预测性模型。
在本章中,我们将介绍基本的机器学习概念,即 ,前提是您具有一些统计学习和概率论的基本知识 。 您将了解机器学习技术的使用以及逻辑过程,这些逻辑过程将增进我们对数据集的性质和属性的了解。 整个过程的目的是建立可支持业务决策的描述性和预测性模型。
无监督学习旨在为数据探索,挖掘和生成提供工具。 在本书中,您将通过具体的示例和分析来探索不同的场景,并且将学习如何应用基本且更复杂的算法来解决特定问题。
......@@ -84,7 +84,7 @@
令人惊讶的是,但是大多数更复杂的场景都具有难以分析的大量潜在原因(有时称为**因素**)的特征。 通常,这不是一个坏条件,但是,正如我们将要讨论的,将它们包括在模型中以通过数据集了解其影响非常重要。
另一方面,决定放弃所有未知元素意味着降低模型的预测能力,并成比例地降低准确性。 因此,诊断分析的主要目标不一定是找出所有原因,而是要列出可观察和可测量的元素(称为**因子**)以及所有潜在的潜在因子(通常归纳为 单个全局元素)。
另一方面,决定放弃所有未知元素意味着降低模型的预测能力,并成比例地降低准确性。 因此,诊断分析的主要目标不一定是找出所有原因,而是要列出可观察和可测量的元素(称为**因子**)以及所有潜在的潜在因子(通常归纳为单个全局元素)。
在某种程度上,诊断分析通常类似于逆向工程过程,因为我们可以轻松地监视效果,但是要检测潜在原因和可观察效果之间的现有关系就更加困难。 因此,这种分析通常是概率性的,并有助于找到确定的特定原因带来特定影响的可能性。 这样,排除非影响元素并确定最初排除的关系也更加容易。 但是,此过程需要对统计学习方法有更深入的了解,除了一些示例(例如高斯混合算子)外,在本书中将不再讨论。
......@@ -96,15 +96,15 @@
一旦收集了全部描述性知识,并且对潜在原因的认识令人满意,就可以创建预测模型。 这些模型的目的是根据模型本身的历史和结构来推断未来的结果。 在许多情况下,此阶段与下一个阶段一起进行分析,因为我们对系统的*自由进化*很少感兴趣(例如,下个月的温度将如何变化),而影响输出的方式。
一旦收集了全部描述性知识,并且对潜在原因的认识令人满意,就可以创建预测模型。 这些模型的目的是根据模型本身的历史和结构来推断未来的结果。 在许多情况下,此阶段与下一个阶段一起进行分析,因为我们对系统的*自由进化*很少感兴趣(例如,下个月的温度将如何变化),而影响输出的方式。
就是说,让我们仅关注预测,考虑应考虑的最重要元素。 首先要考虑的是过程的性质。 除非机器确定性过程的复杂性如此之高以至于我们不得不将它们视为黑匣子,否则我们不需要机器学习来进行确定性过程。 我们将要讨论的绝大多数例子都是关于随机过程,其中不确定性无法消除。 例如,我们知道可以将一天中的温度建模为取决于先前观测值的条件概率(例如,高斯模型)。 因此,预测表明不会将系统转变为确定性的预测(这是不可能的),而是要减小分布的方差,因此仅在较短的温度范围内概率较高。 另一方面,由于我们知道许多潜在因素在幕后发挥作用,因此我们永远都不能接受基于尖峰分布的模型(例如,基于概率为 1 的单个结果),因为这种选择会对模型产生极大的负面影响 最终精度
就是说,让我们仅关注预测,考虑应考虑的最重要元素。 首先要考虑的是过程的性质。 除非机器确定性过程的复杂性如此之高以至于我们不得不将它们视为黑匣子,否则我们不需要机器学习来进行确定性过程。 我们将要讨论的绝大多数例子都是关于随机过程,其中不确定性无法消除。 例如,我们知道可以将一天中的温度建模为取决于先前观测值的条件概率(例如,高斯模型)。 因此,预测表明不会将系统转变为确定性的预测(这是不可能的),而是要减小分布的方差,因此仅在较短的温度范围内概率较高。 另一方面,由于我们知道许多潜在因素在幕后发挥作用,因此我们永远都不能接受基于尖峰分布的模型(例如,基于概率为 1 的单个结果),因为这种选择会对模型的最终精度产生极大的负面影响
如果我们的模型使用受学习过程影响的变量(例如,高斯的均值和协方差矩阵)进行参数化,则我们的目标是找出所谓的**偏差-方差权衡**。 由于本章只是介绍性的一章,因此我们并没有用数学公式对概念进行形式化,而是需要一个实际的定义(更多详细信息,请参见`Bonaccorso G., Mastering Machine Learning Algorithms, Packt, 2018`)。
定义统计预测模型的常用术语是**估计器**。 因此,估计器的偏差是错误假设和学习过程的可测量结果。 换句话说,如果一个过程的平均值为 5.0,而我们的估计值为 3.0,则可以说该模型存在偏差。 考虑前面的示例,如果观察值和预测之间的误差的期望值不为`null`,则我们正在使用有偏估计器。 重要的是要理解,我们并不是说每个估计都必须具有零误差,而是在收集足够的样本并计算均值时,其值应非常接近零(仅在无限样本中它可以为零)。 只要它大于零,就意味着我们的模型无法正确预测训练值。 显然,我们正在寻找平均能产生准确预测的**无偏估计量**
另一方面,估计量的**方差**是存在不属于训练集的样本时鲁棒性的度量。 在本节的开头,我们说过我们的过程通常是随机的。 这意味着必须将任何数据集视为是从特定数据生成过程`p_data`中提取的。 如果我们有足够的代表性元素`x[i] ∈ X`,我们可以假设使用有限的数据集`X`训练分类器会导致模型能够进行分类 可以从`p_data`中提取的所有潜在样本。
另一方面,估计量的**方差**是存在不属于训练集的样本时鲁棒性的度量。 在本节的开头,我们说过我们的过程通常是随机的。 这意味着必须将任何数据集视为是从特定数据生成过程`p_data`中提取的。 如果我们有足够的代表性元素`x[i] ∈ X`,我们可以假设使用有限的数据集`X`训练分类器会导致模型能够分类可以从`p_data`中提取的所有潜在样本。
例如,如果我们需要建模一个人脸分类器,该人脸分类器的上下文仅限于肖像(不允许其他人脸姿势),我们可以收集许多不同个人的肖像。 我们唯一关心的是不排除现实生活中可能存在的类别。 假设我们有 10,000 张不同年龄和性别的人的图像,但是我们没有戴着帽子的肖像。 当系统投入生产时,我们收到客户的电话,说系统对许多图片进行了错误分类。 经过分析,我们发现他们始终代表戴着帽子的人。 显然,我们的模型不对错误负责,因为该模型已使用仅代表数据生成过程区域的样本进行了训练。 因此,为了解决该问题,我们收集了其他样本,并重复了训练过程。 但是,现在我们决定使用更复杂的模型,期望它会更好地工作。 不幸的是,我们观察到更差的验证准确性(例如,训练阶段未使用的子集的准确性)以及更高的训练准确性。 这里发生了什么?
......@@ -114,7 +114,7 @@
原始数据生成过程(实线)和采样数据直方图
如果没有以完全统一的方式对训练集进行采样,或者训练集部分不均衡(某些类别的样本数量少于其他类别),或者模型易于拟合,则结果可能由不正确的分布表示,例如 如下:
如果没有以完全统一的方式对训练集进行采样,或者训练集部分不均衡(某些类别的样本数量少于其他类别),或者模型易于拟合,则结果可能由不正确的分布表示,如下:
![](img/4cf3f8d7-a098-4d74-a620-8bf091a7cde0.png)
......@@ -152,7 +152,7 @@
在这一点上,我们可以简要介绍不同类型的机器学习,重点介绍它们的主要特性和差异。 在以下各节中,我们将讨论非正式定义,然后是更正式的定义。 如果不熟悉讨论中涉及的数学概念,则可以跳过详细信息。 但是,强烈建议您研究所有未知的理论元素,因为它们对于理解下一章中分析的概念至关重要。
在这一点上,我们可以简要介绍不同类型的机器学习,重点介绍它们的主要特性和差异。 在以下各节中,我们将讨论非正式定义,然后是更正式的定义。 如果不熟悉讨论中涉及的数学概念,则可以跳过详细信息。 但是,强烈建议您研究所有未知的理论元素,因为它们对于理解下一章中分析的概念至关重要。
......@@ -183,7 +183,7 @@
![](img/dc48de69-6f80-43e3-97fc-a4f7d40387fd.png)
由于`L`仅取决于参数向量(`x[i]``y[i]`是常数),所以通用 算法必须找到使成本函数最小的最优参数向量。 例如,在**回归**问题(标签是连续的)中,误差度量可以是实际值和预测值之间的平方误差:
由于`L`仅取决于参数向量(`x[i]``y[i]`是常数),所以通用算法必须找到使成本函数最小的最优参数向量。 例如,在**回归**问题(标签是连续的)中,误差度量可以是实际值和预测值之间的平方误差:
![](img/ee38c0ea-fb0c-48b1-abd7-30b4dd44be28.png)
......
......@@ -23,7 +23,7 @@
GAN 是学习生成类似于真实数据或训练集中数据的神经网络。 GAN 的关键思想是让生成器网络和判别器网络相互竞争:生成器试图生成看起来像真实数据的数据,而判别器试图分辨生成的数据是否真实(从已知实数 数据)或伪造(由生成器生成)。 生成器和判别器是一起训练的,在训练过程中,生成器学会生成看起来越来越像真实数据的数据,而判别器则学会将真实数据与伪数据区分开。 生成器通过尝试使判别器的输出概率为真实数据来学习,当将生成器的输出作为判别器的输入时,生成器的输出概率尽可能接近 1.0,而判别器通过尝试实现两个目标来学习:
GAN 是学习生成类似于真实数据或训练集中数据的神经网络。 GAN 的关键思想是让生成器网络和判别器网络相互竞争:生成器试图生成看起来像真实数据的数据,而判别器试图分辨生成的数据是否真实(从已知真实数据)或伪造(由生成器生成)。 生成器和判别器是一起训练的,在训练过程中,生成器学会生成看起来越来越像真实数据的数据,而判别器则学会将真实数据与伪数据区分开。 生成器通过尝试使判别器的输出概率为真实数据来学习,当将生成器的输出作为判别器的输入时,生成器的输出概率尽可能接近 1.0,而判别器通过尝试实现两个目标来学习:
* 当以生成器的输出作为输入时,使其输出的可能性为实,尽可能接近 0.0,这恰好是生成器的相反目标
* 当输入真实数据作为输入时,使其输出的可能性为实数,尽可能接近 1.0
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册