提交 11b56f41 编写于 作者: W wizardforcel

2020-08-13 23:24:38

上级 f287826a
......@@ -36,7 +36,7 @@
# 这本书需要什么
对于这本书,您将需要 Python 版本 3.5( [https://www.continuum.io/downloads](https://www.continuum.io/downloads) )和 TensorFlow( [www.tensorflow.org](http://www.tensorflow.org)。 建议使用以下硬件规格:
对于这本书,您将需要 [Python 版本 3.5](https://www.continuum.io/downloads)[TensorFlow](http://www.tensorflow.org)。 建议使用以下硬件规格:
* CPU 架构:x86_64
* 系统内存:8-32 GB
......@@ -92,42 +92,3 @@
Warnings or important notes appear like this.Tips and tricks appear like this.
# 读者反馈
始终欢迎读者的反馈。 让我们知道您对这本书的看法-您喜欢或不喜欢的书。 读者反馈对我们很重要,因为它可以帮助我们开发出您真正能充分利用的标题。 要向我们发送一般反馈,只需发送电子邮件`feedback@packtpub.com`,然后在您的邮件主题中提及该书的标题。 如果您有专业知识的主题,并且对写作或撰写书籍感兴趣,请参阅 [www.packtpub.com/authors](http://www.packtpub.com/authors) 上的作者指南。
# 客户支持
既然您是 Packt 书的骄傲拥有者,我们可以通过很多方法来帮助您从购买中获得最大收益。
# 下载示例代码
您可以从 [http://www.packtpub.com](http://www.packtpub.com) 的帐户中下载本书的示例代码文件。 如果您在其他地方购买了此书,则可以访问 [http://www.packtpub.com/support](http://www.packtpub.com/support) 并注册以将文件直接通过电子邮件发送给您。 您可以按照以下步骤下载代码文件:
1. 使用您的电子邮件地址和密码登录或注册到我们的网站。
2. 将鼠标指针悬停在顶部的“支持”选项卡上。
3. 单击代码下载和勘误。
4. 在搜索框中输入书籍的名称。
5. 选择您要下载其代码文件的书。
6. 从购买本书的下拉菜单中选择。
7. 单击代码下载。
您还可以通过在 Packt Publishing 网站上的图书网页上单击“代码文件”按钮来下载代码文件。 通过在“搜索”框中输入书名可以访问该页面。 请注意,您需要登录到 Packt 帐户。 下载文件后,请确保使用以下最新版本解压缩或解压缩文件夹:
* Windows 的 WinRAR / 7-Zip
* Mac 版 Zipeg / iZip / UnRarX
* 适用于 Linux 的 7-Zip / PeaZip
本书的代码包也托管在 GitHub 的 [https://github.com/PacktPublishing/TensorFlow-1x-Deep-Learning-Cookbook](https://github.com/PacktPublishing/TensorFlow-1x-Deep-Learning-Cookbook) 上。 我们还从 [https://github.com/PacktPublishing/](https://github.com/PacktPublishing/) 提供了丰富的书籍和视频目录中的其他代码包。 去看一下!
# 勘误
尽管我们已尽一切努力确保内容的准确性,但还是会发生错误。 如果您发现我们的其中一本书中有错误-可能是文字或代码中的错误-请向我们报告,我们将不胜感激。 这样,您可以使其他读者免于沮丧,并帮助我们改进本书的后续版本。 如果您发现任何勘误,请访问 [http://www.packtpub.com/submit-errata](http://www.packtpub.com/submit-errata) 进行报告,选择您的图书,点击“勘误提交表格”链接,然后输入勘误的详细信息 。 一旦您的勘误得到验证,您的提交将被接受,勘误将被上载到我们的网站或添加到该标题的勘误部分下的任何现有勘误列表中。 要查看以前提交的勘误,请转到 [https://www.packtpub.com/books/content/support](https://www.packtpub.com/books/content/support) ,然后在搜索字段中输入书籍的名称。 所需信息将出现在“勘误”部分下。
# 海盗行为
互联网上版权材料的盗版在所有媒体中都是一个持续存在的问题。 在 Packt,我们非常重视版权和许可的保护。 如果您在 Internet 上以任何形式发现我们的作品的任何非法副本,请立即向我们提供位置地址或网站名称,以便我们寻求补救。 请通过`copyright@packtpub.com`与我们联系,并提供指向可疑盗版材料的链接。 感谢您在保护我们的作者方面的帮助以及我们为您带来有价值的内容的能力。
# 问题
如果您对本书的任何方面都有疑问,可以通过`questions@packtpub.com`与我们联系,我们将尽力解决该问题。
\ No newline at end of file
......@@ -20,7 +20,7 @@ TensorFlow 使得一切变得更容易,更快捷,从而减少了实现想法
# 介绍
TensorFlow 是 Google Brain 团队针对**深层神经网络****DNN**)开发的功能强大的开源软件库。 它于 2015 年 11 月首次在 Apache 2.x 许可下提供; 截止到今天,其 GitHub 存储库( [https://github.com/tensorflow/tensorflow](https://github.com/tensorflow/tensorflow)提交了超过 17,000 次提交,在短短两年内大约有 845 个贡献者。 这本身就是 TensorFlow 受欢迎程度和性能的衡量标准。 下图显示了流行的深度学习框架的比较,可以明显看出 TensorFlow 是其中的佼佼者:
TensorFlow 是 Google Brain 团队针对**深层神经网络****DNN**)开发的功能强大的开源软件库。 它于 2015 年 11 月首次在 Apache 2.x 许可下提供; 截止到今天,其 [GitHub 存储库](https://github.com/tensorflow/tensorflow)提交了超过 17,000 次提交,在短短两年内大约有 845 个贡献者。 这本身就是 TensorFlow 受欢迎程度和性能的衡量标准。 下图显示了流行的深度学习框架的比较,可以明显看出 TensorFlow 是其中的佼佼者:
![](img/bef34f80-4861-4dee-93e3-95a9ba165525.png)
......@@ -37,7 +37,7 @@ The Figure is based on data taken from the Github repositories of each as on 12
* TensorFlow 具有很好的社区支持。
* TensorFlow 不仅仅是一个软件库; 它是一套包含 TensorFlow,TensorBoard 和 TensorServing 的软件。
Google 研究博客( [https://research.googleblog.com/2016/11/celebrating-tensorflows-first-year.html](https://research.googleblog.com/2016/11/celebrating-tensorflows-first-year.html)列出了世界各地使用 TensorFlow 进行的一些引人入胜的项目:
[Google 研究博客](https://research.googleblog.com/2016/11/celebrating-tensorflows-first-year.html)列出了世界各地使用 TensorFlow 进行的一些引人入胜的项目:
* Google 翻译正在使用 TensorFlow 和**张量处理单元****TPU**
* 可以使用基于强化学习的模型生成旋律的 Magenta 项目采用 TensorFlow
......@@ -50,7 +50,7 @@ Google 研究博客( [https://research.googleblog.com/2016/11/celebrating-tens
在本食谱中,您将学习如何在不同的 OS(Linux,Mac 和 Windows)上全新安装 TensorFlow 1.3。 我们将找到安装 TensorFlow 的必要要求。 TensorFlow 可以在 Ubuntu 和 macOS 上使用本机 pip,Anaconda,virtualenv 和 Docker 安装。 对于 Windows 操作系统,可以使用本机 pip 或 Anaconda。
由于 Anaconda 可以在所有三个 OS 上工作,并且提供了一种简便的方法,不仅可以在同一系统上进行安装,还可以在同一系统上维护不同的项目环境,因此在本书中,我们将集中精力使用 Anaconda 安装 TensorFlow。 可从 [https://conda.io/docs/user-guide/index.html](https://conda.io/docs/user-guide/index.html) 阅读有关 Anaconda 及其管理环境的更多详细信息。
由于 Anaconda 可以在所有三个 OS 上工作,并且提供了一种简便的方法,不仅可以在同一系统上进行安装,还可以在同一系统上维护不同的项目环境,因此在本书中,我们将集中精力使用 Anaconda 安装 TensorFlow。 可从[这里](https://conda.io/docs/user-guide/index.html)阅读有关 Anaconda 及其管理环境的更多详细信息。
本书中的代码已在以下平台上经过测试:
......@@ -59,7 +59,7 @@ Google 研究博客( [https://research.googleblog.com/2016/11/celebrating-tens
# 做好准备
TensorFlow 安装的前提条件是系统已安装 Python 2.5 或更高版本。 本书中的食谱是为 Python 3.5(Anaconda 3 发行版)设计的。 要准备安装 TensorFlow,请首先确保已安装 Anaconda。 您可以从 [https://www.continuum.io/downloads](https://www.continuum.io/downloads) 下载并安装适用于 Windows / macOS 或 Linux 的 Anaconda。
TensorFlow 安装的前提条件是系统已安装 Python 2.5 或更高版本。 本书中的食谱是为 Python 3.5(Anaconda 3 发行版)设计的。 要准备安装 TensorFlow,请首先确保已安装 Anaconda。 您可以从[这里](https://www.continuum.io/downloads)下载并安装适用于 Windows / macOS 或 Linux 的 Anaconda。
安装后,您可以在终端窗口中使用以下命令来验证安装:
......@@ -768,7 +768,7 @@ TensorFlow 1.x 不提供向后兼容性。 这意味着适用于 TensorFlow 0.x
这是我们进行食谱的方法:
1. 首先,从 [https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/compatibility](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/compatibility) 下载`tf_upgrade.py`
1. 首先,从[这里](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/compatibility)下载`tf_upgrade.py`
2. 如果要将一个文件从 TensorFlow 0.x 转换为 TensorFlow 1.0,请在命令行中使用以下命令:
```py
......@@ -815,11 +815,11 @@ with tf.variable_scope(tf.get_variable_scope(), resuse=True):
# 使用 XLA 增强计算性能
**加速线性代数****XLA**)是线性代数的特定领域编译器。 根据 [https://www.tensorflow.org/performance/xla/](https://www.tensorflow.org/performance/xla/) 的说法,它仍处于实验阶段,可用于优化 TensorFlow 计算。 它可以提高服务器和移动平台上的执行速度,内存使用率和可移植性。 它提供双向 **JIT****即时**)编译或 **AoT****预先**)编译。 使用 XLA,您可以生成平台相关的二进制文件(适用于 x64,ARM 等大量平台),可以针对内存和速度进行优化。
**加速线性代数****XLA**)是线性代数的特定领域编译器。 根据[这个页面](https://www.tensorflow.org/performance/xla/)的说法,它仍处于实验阶段,可用于优化 TensorFlow 计算。 它可以提高服务器和移动平台上的执行速度,内存使用率和可移植性。 它提供双向 **JIT****即时**)编译或 **AoT****预先**)编译。 使用 XLA,您可以生成平台相关的二进制文件(适用于 x64,ARM 等大量平台),可以针对内存和速度进行优化。
# 做好准备
目前,XLA 不包含在 TensorFlow 的二进制发行版中。 需要从源代码构建它。 要从源代码构建 TensorFlow,需要具备 LLVM 和 Bazel 以及 TensorFlow 的知识。 [TensorFlow.org](http://TensorFlow.org) 仅在 MacOS 和 Ubuntu 中支持从源代码构建。 从源代码构建 TensorFlow 所需的步骤如下( [https://www.tensorflow.org/install/install_sources](https://www.tensorflow.org/install/install_sources)
目前,XLA 不包含在 TensorFlow 的二进制发行版中。 需要从源代码构建它。 要从源代码构建 TensorFlow,需要具备 LLVM 和 Bazel 以及 TensorFlow 的知识。 [TensorFlow.org](http://TensorFlow.org) 仅在 MacOS 和 Ubuntu 中支持从源代码构建。 [从源代码构建 TensorFlow 所需的步骤如下](https://www.tensorflow.org/install/install_sources)
1. 确定要安装的 TensorFlow-仅具有 CPU 支持的 TensorFlow 或具有 GPU 支持的 TensorFlow。
2. 克隆 TensorFlow 存储库:
......@@ -906,7 +906,7 @@ TensorFlow.org 讲述了 tfcompile:
tfcompile takes a subgraph, identified by the TensorFlow concepts of feeds and fetches, and generates a function that implements that subgraph. The feeds are the input arguments for the function, and the fetches are the output arguments for the function. All inputs must be fully specified by the feeds; the resulting pruned subgraph cannot contain placeholder or variable nodes. It is common to specify all placeholders and variables as feeds, which ensures the resulting subgraph no longer contains these nodes. The generated function is packaged as a cc_library, with a header file exporting the function signature, and an object file containing the implementation. The user writes code to invoke the generated function as appropriate.
有关执行此操作的高级步骤,可以参考 [https://www.tensorflow.org/performance/xla/tfcompile](https://www.tensorflow.org/performance/xla/tfcompile)
有关执行此操作的高级步骤,可以参考[这里](https://www.tensorflow.org/performance/xla/tfcompile)
# 调用 CPU / GPU 设备
......@@ -1003,7 +1003,7 @@ sess.close()
![](img/2eba3092-0b16-458a-b577-d7965ed73644.png)
由 Hinton 等人定义的深度学习。 ( [https://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf](https://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf),由包含多个处理层(隐藏层)的计算模型组成。 层数的增加导致学习时间的增加。 由于数据集很大,因此学习时间进一步增加,正如当今的 CNN 或**生成对抗网络****GAN**)的标准一样。 因此,要实际实现 DNN,我们需要很高的计算能力。 NVDIA®的 GPU 的出现使其变得可行,然后 Google 的 TensorFlow 使得无需复杂的数学细节即可实现复杂的 DNN 结构成为可能,并且大型数据集的可用性为 DNN 提供了必要的条件。 TensorFlow 是最受欢迎的深度学习库,其原因如下:
[由 Hinton 等人定义的深度学习](https://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf),由包含多个处理层(隐藏层)的计算模型组成。 层数的增加导致学习时间的增加。 由于数据集很大,因此学习时间进一步增加,正如当今的 CNN 或**生成对抗网络****GAN**)的标准一样。 因此,要实际实现 DNN,我们需要很高的计算能力。 NVDIA®的 GPU 的出现使其变得可行,然后 Google 的 TensorFlow 使得无需复杂的数学细节即可实现复杂的 DNN 结构成为可能,并且大型数据集的可用性为 DNN 提供了必要的条件。 TensorFlow 是最受欢迎的深度学习库,其原因如下:
* TensorFlow 是一个强大的库,用于执行大规模的数值计算,例如矩阵乘法或自动微分。 这两个计算对于实现和训练 DNN 是必需的。
* TensorFlow 在后端使用 C / C ++,这使其计算速度更快。
......@@ -1015,12 +1015,12 @@ sess.close()
任何深度学习网络都包含四个重要组成部分:数据集,定义模型(网络结构),训练/学习和预测/评估。 我们可以在 TensorFlow 中完成所有这些操作; 让我们看看如何:
* **数据集**:DNN 依赖于大量数据。 可以收集或生成数据,或者也可以使用可用的标准数据集。 TensorFlow 支持三种主要方法来读取数据。 有不同的数据集。 我们将用来训练本书中构建的模型的一些数据集如下:
* **MNIST**:这是最大的手写数字数据库(0-9)。 它由 60,000 个示例的训练集和 10,000 个示例的测试集组成。 数据集保存在 Yann LeCun 的主页( [http://yann.lecun.com/exdb/mnist/](http://yann.lecun.com/exdb/mnist/)中。 数据集包含在`tensorflow.examples.tutorials.mnist`中的 TensorFlow 库中。
* **CIFAR10**:此数据集包含 10 类 60,000 张 32 x 32 彩色图像,每类 6,000 张图像。 训练集包含 50,000 张图像和测试数据集-10,000 张图像。 数据集的十类是:飞机,汽车,鸟,猫,鹿,狗,青蛙,马,船和卡车。 数据由多伦多大学计算机科学系( [https://www.cs.toronto.edu/~kriz/cifar.html](https://www.cs.toronto.edu/~kriz/cifar.html)维护。
* **WORDNET**:这是英语的词汇数据库。 它包含名词,动词,副词和形容词,它们被分组为认知同义词(同义词集),也就是说,代表相同概念的单词(例如,关闭和关闭或汽车和汽车)被分组为无序集合。 它包含 155,287 个单词,按 117,659 个同义词集进行组织,总计 206,941 个单词感对。 数据由普林斯顿大学( [https://wordnet.princeton.edu/](https://wordnet.princeton.edu/)维护。
* **MNIST**:这是最大的手写数字数据库(0-9)。 它由 60,000 个示例的训练集和 10,000 个示例的测试集组成。 数据集保存在 [Yann LeCun 的主页](http://yann.lecun.com/exdb/mnist/)中。 数据集包含在`tensorflow.examples.tutorials.mnist`中的 TensorFlow 库中。
* **CIFAR10**:此数据集包含 10 类 60,000 张 32 x 32 彩色图像,每类 6,000 张图像。 训练集包含 50,000 张图像和测试数据集-10,000 张图像。 数据集的十类是:飞机,汽车,鸟,猫,鹿,狗,青蛙,马,船和卡车。 数据由[多伦多大学计算机科学系](https://www.cs.toronto.edu/~kriz/cifar.html)维护。
* **WORDNET**:这是英语的词汇数据库。 它包含名词,动词,副词和形容词,它们被分组为认知同义词(同义词集),也就是说,代表相同概念的单词(例如,关闭和关闭或汽车和汽车)被分组为无序集合。 它包含 155,287 个单词,按 117,659 个同义词集进行组织,总计 206,941 个单词感对。 数据由[普林斯顿大学](https://wordnet.princeton.edu/)维护。
* **ImageNET**:这是根据 WORDNET 层次结构组织的图像数据集(目前仅名词)。 每个有意义的概念(同义词集)由多个单词或单词短语描述。 每个同义词集平均由 1,000 张图像表示。 目前,它具有 21,841 个同义词集和总共 14,197,122 张图像。 自 2010 年以来,每年组织一次 **ImageNet 大规模视觉识别挑战赛****ILSVRC**),以将图像分类为 1,000 个对象类别之一。 这项工作由普林斯顿大学,斯坦福大学,A9 和 Google( [http://www.image-net.org/](http://www.image-net.org/)赞助。
* **YouTube-8M**:这是一个大规模的标记视频数据集,包含数百万个 YouTube 视频。 它有大约 700 万个 YouTube 视频 URL,分为 4716 个类别,分为 24 个顶级类别。 它还提供了预处理支持和帧级功能。 该数据集由 Google Research( [https://research.google.com/youtube8m/](https://research.google.com/youtube8m/)维护。
* **ImageNET**:这是根据 WORDNET 层次结构组织的图像数据集(目前仅名词)。 每个有意义的概念(同义词集)由多个单词或单词短语描述。 每个同义词集平均由 1,000 张图像表示。 目前,它具有 21,841 个同义词集和总共 14,197,122 张图像。 自 2010 年以来,每年组织一次 **ImageNet 大规模视觉识别挑战赛****ILSVRC**),以将图像分类为 1,000 个对象类别之一。 这项工作由[普林斯顿大学,斯坦福大学,A9 和 Google](http://www.image-net.org/) 赞助。
* **YouTube-8M**:这是一个大规模的标记视频数据集,包含数百万个 YouTube 视频。 它有大约 700 万个 YouTube 视频 URL,分为 4716 个类别,分为 24 个顶级类别。 它还提供了预处理支持和帧级功能。 该数据集由 [Google Research](https://research.google.com/youtube8m/)维护。
**读取数据**:在 TensorFlow 中可以通过三种方式读取数据:通过`feed_dict`馈送,从文件读取以及使用预加载的数据。 我们将在整本书中使用本食谱中描述的组件来阅读和提供数据。 在接下来的步骤中,您将学习每个步骤。
......@@ -1104,7 +1104,7 @@ with tf.Session as sess:
在 TensorFlow 1.3 中,添加了一个称为 TensorFlow Estimators 的新功能。 TensorFlow 估计器使创建神经网络模型的任务变得更加容易,它是一个高级 API,封装了训练,评估,预测和服务的过程。 它提供了使用预制估算器的选项,也可以编写自己的自定义估算器。 有了预制的估算器,就不再需要担心构建计算或创建会话,它就可以处理所有这些。
目前,TensorFlow 估算器有六个预制的估算器。 使用 TensorFlow 预制的 Estimators 的另一个优势是,它本身也可以创建可在 TensorBoard 上可视化的摘要。 有关估算器的更多详细信息,请访问 [https://www.tensorflow.org/programmers_guide/estimators](https://www.tensorflow.org/programmers_guide/estimators)
目前,TensorFlow 估算器有六个预制的估算器。 使用 TensorFlow 预制的 Estimators 的另一个优势是,它本身也可以创建可在 TensorBoard 上可视化的摘要。 有关估算器的更多详细信息,请访问[这里](https://www.tensorflow.org/programmers_guide/estimators)
# 基于 DNN 的问题所需的不同 Python 软件包
......@@ -1127,7 +1127,7 @@ conda install -c conda-forge matplotlib
4. **Pandas**:这提供了各种数据结构和数据分析工具。 使用 Pandas,您可以在内存数据结构和不同格式之间读取和写入数据。 我们可以读取`.csv`和文本文件。 可以使用`pip install``conda install`进行安装。
5. **Seaborn**:这是基于 Matplotlib 构建的专门统计数据可视化工具。
6. **H5fs**:H5fs​​是适用于 Linux 的文件系统(也是具有 FUSE 实现的其他操作系统,例如 macOS X),可以在 **HDFS****分层数据格式文件系统**)上运行 。
7. **PythonMagick**:它是`ImageMagick`库的 Python 绑定。 它是显示,转换和编辑光栅图像和矢量图像文件的库。 它支持 200 多种图像文件格式。 可以使用`ImageMagick.`提供的源代码版本进行安装。某些`.whl`格式也可用于方便的`pip install`[http://www.lfd.uci.edu/%7Egohlke/pythonlibs/#pythonmagick](http://www.lfd.uci.edu/%7Egohlke/pythonlibs/#pythonmagick)
7. **PythonMagick**:它是`ImageMagick`库的 Python 绑定。 它是显示,转换和编辑光栅图像和矢量图像文件的库。 它支持 200 多种图像文件格式。 可以使用`ImageMagick.`提供的源代码版本进行安装。某些`.whl`格式也可用于方便的[`pip install`](http://www.lfd.uci.edu/%7Egohlke/pythonlibs/#pythonmagick)
8. **TFlearn**:TFlearn 是建立在 TensorFlow 之上的模块化透明的深度学习库。 它为 TensorFlow 提供了更高级别的 API,以促进并加速实验。 它目前支持大多数最新的深度学习模型,例如卷积,LSTM,BatchNorm,BiRNN,PReLU,残差网络和生成网络。 它仅适用于 TensorFlow 1.0 或更高版本。 要安装,请使用`pip install tflearn`
9. **Keras**:Keras 也是神经网络的高级 API,它使用 TensorFlow 作为其后端。 它也可以在 Theano 和 CNTK 之上运行。 这是非常用户友好的,添加图层只是一项工作。 可以使用`pip install keras`安装。
......@@ -1136,7 +1136,7 @@ conda install -c conda-forge matplotlib
您可以在下面找到一些 Web 链接以获取有关 TensorFlow 安装的更多信息
* [https://www.tensorflow.org/install/](https://www.tensorflow.org/install/)
* [https://www.tensorflow.org/install/install_sources](https://www.tensorflow.org/install/install_sources)
* [http://llvm.org/](http://llvm.org/)
* [https://bazel.build/](https://bazel.build/)
\ No newline at end of file
* <https://www.tensorflow.org/install/>
* <https://www.tensorflow.org/install/install_sources>
* <http://llvm.org/>
* <https://bazel.build/>
\ No newline at end of file
......@@ -25,7 +25,7 @@
![](img/989fcbf6-aa62-4d79-9313-d27833b11e02.png)
在这里,总和是所有训练样本的总和。 根据输入变量`X`的数量和类型,可以使用不同类型的线性回归:简单线性回归(一个输入变量,一个输出变量),多个线性回归(许多独立输入变量,一个输出变量) )或多元线性回归(许多独立的输入变量和多个输出变量)。 有关线性回归的更多信息,请参考 [https://en.wikipedia.org/wiki/Linear_regression](https://en.wikipedia.org/wiki/Linear_regression)
在这里,总和是所有训练样本的总和。 根据输入变量`X`的数量和类型,可以使用不同类型的线性回归:简单线性回归(一个输入变量,一个输出变量),多个线性回归(许多独立输入变量,一个输出变量) )或多元线性回归(许多独立的输入变量和多个输出变量)。 有关线性回归的更多信息,请参考[这个页面](https://en.wikipedia.org/wiki/Linear_regression)
* **Logistic 回归**:用于确定事件的概率。 按照惯例,事件表示为分类因变量。 使用`logit`函数(`sigmoid`函数)表示事件的可能性:
......@@ -39,7 +39,7 @@ Logistic 回归用于分类问题,例如,给定医学数据,我们可以
![](img/45534cbd-30d1-46b6-b2f7-f83b946bf478.png)
在此, `K`是类别的总数。 有关逻辑回归的更多信息,请参见 [https://en.wikipedia.org/wiki/Logistic_regression](https://en.wikipedia.org/wiki/Logistic_regression)
在此, `K`是类别的总数。 有关逻辑回归的更多信息,请参见[这个页面](https://en.wikipedia.org/wiki/Logistic_regression)
这是两种常用的回归技术。
......@@ -262,9 +262,9 @@ learning_rate = tf.train.exponential_decay(initial_learning_rate, global_step, d
以下是一些针对不同优化器的良好链接:
* [https://arxiv.org/pdf/1609.04747.pdf](https://arxiv.org/pdf/1609.04747.pdf) :该白皮书很好地概述了各种优化算法。
* [https://www.tensorflow.org/api_guides/python/train#Optimizers](https://www.tensorflow.org/api_guides/python/train#Optimizers) :这是 TensorFlow.org 链接,其中详细介绍了如何使用 TensorFlow 中包含的不同优化器。
* [https://arxiv.org/pdf/1412.6980.pdf](https://arxiv.org/pdf/1412.6980.pdf) :有关 Adam 优化器的论文。
* [Arxiv 1609.04747](https://arxiv.org/pdf/1609.04747.pdf) :该白皮书很好地概述了各种优化算法。
* [这是 TensorFlow.org 链接](https://www.tensorflow.org/api_guides/python/train#Optimizers),其中详细介绍了如何使用 TensorFlow 中包含的不同优化器。
* [Arxiv 1412.6980](https://arxiv.org/pdf/1412.6980.pdf):有关 Adam 优化器的论文。
# 从 CSV 文件读取和预处理数据
......@@ -272,7 +272,7 @@ learning_rate = tf.train.exponential_decay(initial_learning_rate, global_step, d
# 做好准备
我们将考虑 Harrison 和 Rubinfield 在 1978 年收集的波士顿住房价格数据集( [http://lib.stat.cmu.edu/datasets/boston](http://lib.stat.cmu.edu/datasets/boston)。该数据集包含 506 个样本案例。 每个房屋都有 14 个属性:
我们将考虑 Harrison 和 Rubinfield 在 1978 年收集的[波士顿住房价格数据集](http://lib.stat.cmu.edu/datasets/boston)。该数据集包含 506 个样本案例。 每个房屋都有 14 个属性:
* **`CRIM`**:按城镇划分的人均犯罪率
* **`ZN`**:已划定 25,000 平方英尺以上土地的居住用地比例
......@@ -662,7 +662,7 @@ print('Predicted value: ${0} Actual value: / ${1}'.format(Y_pred[0]*1000, Y_tra
# MNIST 数据集上的逻辑回归
此配方基于 [https://www.tensorflow.org/get_started/mnist/beginners](https://www.tensorflow.org/get_started/mnist/beginners) 提供的 MNIST 的逻辑回归,但我们将添加一些 TensorBoard 摘要以更好地理解它。 你们大多数人必须已经熟悉 MNIST 数据集-就像机器学习的 ABC 一样。 它包含手写数字的图像和每个图像的标签,说明它是哪个数字。
此配方基于[这个页面](https://www.tensorflow.org/get_started/mnist/beginners)提供的 MNIST 的逻辑回归,但我们将添加一些 TensorBoard 摘要以更好地理解它。 你们大多数人必须已经熟悉 MNIST 数据集-就像机器学习的 ABC 一样。 它包含手写数字的图像和每个图像的标签,说明它是哪个数字。
对于逻辑回归,我们对输出 Y 使用一热编码。因此,我们有 10 位代表输出; 每个位可以具有 0 或 1 的值,并且为 1 热点意味着对于标签 Y 中的每个图像,10 个位中只有 1 个位的值为 1,其余为 0。 在这里,您可以看到手写数字 8 的图像及其热编码值`[0 0 0 0 0 0 0 0 0 1 0]`
......@@ -789,6 +789,6 @@ with tf.Session() as sess:
如果您有兴趣了解更多信息,这些是一些很好的资源:
* 关于 TensorBoard 并可视化: [https://www.tensorflow.org/get_started/summaries_and_tensorboard](https://www.tensorflow.org/get_started/summaries_and_tensorboard)
* 这是一门有关统计和概率的很好的课程: [https://www.khanacademy.org/math/statistics-probability/describing-relationships-quantitative-data](https://www.khanacademy.org/math/statistics-probability/describing-relationships-quantitative-data)
* 有关回归的更多详细信息: [https://onlinecourses.science.psu.edu/stat501/node/250](https://onlinecourses.science.psu.edu/stat501/node/250)
\ No newline at end of file
* [关于 TensorBoard 和可视化](https://www.tensorflow.org/get_started/summaries_and_tensorboard)
* [这是一门有关统计和概率的很好的课程](https://www.khanacademy.org/math/statistics-probability/describing-relationships-quantitative-data)
* [有关回归的更多详细信息](https://onlinecourses.science.psu.edu/stat501/node/250)
\ No newline at end of file
......@@ -14,9 +14,9 @@
神经网络,通常也称为**连接器模型**,是受人脑启发的。 像人的大脑一样,神经网络是通过称为**权重**的突触强度相互连接的大量人工神经元的集合。 正如我们通过长辈提供给我们的示例进行学习一样,人工神经网络也可以通过作为训练数据集提供给他们的示例进行学习。 有了足够数量的训练数据集,人工神经网络可以概括信息,然后也可以将其用于看不见的数据。 太棒了,它们听起来像魔术!
神经网络并不是什么新鲜事物。 第一个神经网络模型 McCulloch Pitts(MCP)( [http://vordenker.de/ggphilosophy/mcculloch_a-ologic-calculus.pdf](http://vordenker.de/ggphilosophy/mcculloch_a-logical-calculus.pdf) )模型最早是在 1943 年提出的。 建造了第一台计算机!)该模型可以执行 AND / OR / NOT 之类的逻辑运算。 MCP 模型具有固定的权重和偏差; 没有学习的可能。 几年后,Frank Rosenblatt 在 1958 年解决了这个问题( [https://blogs.umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf](https://blogs.umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf)。 他提出了第一个学习神经网络,称为**感知机**
神经网络并不是什么新鲜事物。 第一个神经网络模型[McCulloch Pitts(MCP)](http://vordenker.de/ggphilosophy/mcculloch_a-logical-calculus.pdf)最早在 1943 年提出。 建造了第一台计算机!)该模型可以执行 AND / OR / NOT 之类的逻辑运算。 MCP 模型具有固定的权重和偏差; 没有学习的可能。 几年后,[Frank Rosenblatt 在 1958 年解决了这个问题](https://blogs.umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf)。 他提出了第一个学习神经网络,称为**感知机**
从那时起,众所周知,添加多层神经元并建立一个深而密集的网络将有助于神经网络解决复杂的任务。 正如母亲为孩子的成就感到自豪一样,科学家和工程师对使用**神经网络****NN**)( [https:// www。 youtube.com/watch?v=jPHUlQiwD9Y](https://www.youtube.com/watch?v=jPHUlQiwD9Y)。 这些声明不是虚假的,但是由于硬件计算的限制和复杂的网络结构,当时根本不可能实现它们。 这导致了 1970 年代和 1980 年代的 **AI 寒冬**。 在这些寒战中,由于很少或几乎没有对基于 AI 的项目提供资金,因此该领域的进展放缓了。
从那时起,众所周知,添加多层神经元并建立一个深而密集的网络将有助于神经网络解决复杂的任务。 正如母亲为孩子的成就感到自豪一样,科学家和工程师对使用[**神经网络**(**NN**)](https://www.youtube.com/watch?v=jPHUlQiwD9Y)。 这些声明不是虚假的,但是由于硬件计算的限制和复杂的网络结构,当时根本不可能实现它们。 这导致了 1970 年代和 1980 年代的 **AI 寒冬**。 在这些寒战中,由于很少或几乎没有对基于 AI 的项目提供资金,因此该领域的进展放缓了。
随着 DNN 和 GPU 的出现,情况发生了变化。 今天,我们拥有的网络可以在较少的调整参数的情况下实现更好的性能,诸如辍学和转移学习之类的技术可以进一步减少训练时间,最后,硬件公司正在提出专门的硬件芯片来执行基于 NN 的快速计算。
......@@ -24,7 +24,7 @@
![](img/b0e25ccb-1d0e-41a6-ab13-0a509b2239ba.png)
来源: [https://commons.wikimedia.org/wiki/File:Rosenblattperceptron.png](https://commons.wikimedia.org/wiki/File:Rosenblattperceptron.png)
[来源](https://commons.wikimedia.org/wiki/File:Rosenblattperceptron.png)
当仅存在此类神经元的一层时,它称为感知器。 输入层称为**第零层**,因为它仅缓冲输入。 存在的唯一神经元层形成输出层。 输出层的每个神经元都有自己的权重和阈值。 当存在许多这样的层时,该网络称为**多层感知器****MLP**)。 一个 MLP 具有一个或多个隐藏层。 这些隐藏层具有不同数量的隐藏神经元。 每个隐藏层的神经元具有相同的激活函数:
......@@ -210,8 +210,8 @@ with tf.Session() as sess:
# 也可以看看
* 该链接提供了 TensorFlow 中定义的激活函数及其使用方法的详细信息: [https://www.tensorflow.org/versions/r0.12/api_docs/python/nn/activation_functions_](https://www.tensorflow.org/versions/r0.12/api_docs/python/nn/activation_functions_)
* 关于激活函数的不错总结: [https://en.wikipedia.org/wiki/Activation_function](https://en.wikipedia.org/wiki/Activation_function)
* [该链接提供了 TensorFlow 中定义的激活函数及其使用方法的详细信息](https://www.tensorflow.org/versions/r0.12/api_docs/python/nn/activation_functions_)
* [关于激活函数的不错总结](https://en.wikipedia.org/wiki/Activation_function)
# 单层感知器
......@@ -344,7 +344,7 @@ BPN 算法是神经网络中研究最多的算法之一。 它用于将错误从
![](img/634458d9-0a04-4b8a-a880-e422aeee7698.png)
现在方程式就位了,让我们看看如何在 TensorFlow 中做到这一点。 在本食谱中,我们使用相同的旧 MNIST 数据集( [http://yann.lecun.com/exdb/mnist/](http://yann.lecun.com/exdb/mnist/)
现在方程式就位了,让我们看看如何在 TensorFlow 中做到这一点。 在本食谱中,我们使用相同的[旧 MNIST 数据集](http://yann.lecun.com/exdb/mnist/)
# 怎么做...
......@@ -492,10 +492,10 @@ with tf.Session() as sess:
# 也可以看看
* MNIST 数据库: [http://yann.lecun.com/exdb/mnist/](http://yann.lecun.com/exdb/mnist/)
* 反向传播算法的简化解释: [http://neuralnetworksanddeeplearning.com/chap2.html](http://neuralnetworksanddeeplearning.com/chap2.html)
* 反向传播算法的另一种直观解释: [http://cs231n.github.io/optimization-2/](http://cs231n.github.io/optimization-2/)
* 关于反向传播算法的另一种方法,它提供了详细信息,以及推导以及如何将其应用于不同的 neyworks: [https://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf](https://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf)
* [MNIST 数据库](http://yann.lecun.com/exdb/mnist/)
* [反向传播算法的简化解释](http://neuralnetworksanddeeplearning.com/chap2.html)
* [反向传播算法的另一种直观解释](http://cs231n.github.io/optimization-2/)
* [关于反向传播算法的另一种方法,它提供了详细信息,以及推导以及如何将其应用于不同的 neyworks](https://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf)
# 使用 MLP 的 MNIST 分类器
......@@ -611,7 +611,7 @@ import tensorflow as tf
# 使用 MLP 预测波士顿房价的函数逼近
Hornik 等人( [http://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf](http://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf) )的工作证明了 以下:
[Hornik 等人的工作](http://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf)证明了以下:
"multilayer feedforward networks with as few as one hidden layer are indeed capable of universal approximation in a very precise and satisfactory sense."
......@@ -845,13 +845,13 @@ for epoch in epochs:
# 还有更多...
还有另一种称为**贝叶斯优化**的方法,该方法也可以用于调整超参数。 在其中,我们定义了一个采集函数以及一个高斯过程。 高斯过程使用一组先前评估的参数以及由此产生的精度来假设大约未观测到的参数。 使用此信息的采集功能建议使用下一组参数。 有一个包装程序可用于甚至基于梯度的超参数优化 [https://github.com/lucfra/RFHO](https://github.com/lucfra/RFHO)
还有另一种称为**贝叶斯优化**的方法,该方法也可以用于调整超参数。 在其中,我们定义了一个采集函数以及一个高斯过程。 高斯过程使用一组先前评估的参数以及由此产生的精度来假设大约未观测到的参数。 使用此信息的采集功能建议使用下一组参数。 有一个包装程序甚至可用于[基于梯度的超参数优化](https://github.com/lucfra/RFHO)
# 也可以看看
* 很好地介绍了两个用于超级参数优化的出色开源软件包:Hyperopt 和 scikit-optimize: [https://roamanalytics.com/2016/09/15/optimizing-the-hyperparameter-of-which-hyperparameter-optimizer 使用/](https://roamanalytics.com/2016/09/15/optimizing-the-hyperparameter-of-which-hyperparameter-optimizer-to-use/)
* 另一个有关 Hyperopt 的内容: [http://fastml.com/optimizing-hyperparams-with-hyperopt/](http://fastml.com/optimizing-hyperparams-with-hyperopt/)
* Bengio 和其他人撰写的有关超参数优化各种算法的详细论文: [https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf](https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf)
* [两个用于超级参数优化的出色开源软件包的很好介绍:Hyperopt 和 scikit-optimize](https://roamanalytics.com/2016/09/15/optimizing-the-hyperparameter-of-which-hyperparameter-optimizer-to-use/)
* [另一个有关 Hyperopt 的内容](http://fastml.com/optimizing-hyperparams-with-hyperopt/)
* [Bengio 和其他人撰写的有关超参数优化各种算法的详细论文](https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf)
# 更高级别的 API-硬
......@@ -905,7 +905,7 @@ model.predict(test_data, batch_size=10)
# 还有更多...
Keras 提供了添加卷积层,池化层,循环层甚至本地连接层的选项。 Keras 文档中的 [https://keras.io/models/sequential/](https://keras.io/models/sequential/) 中提供了每种方法的详细说明。
Keras 提供了添加卷积层,池化层,循环层甚至本地连接层的选项。 [Keras 文档](https://keras.io/models/sequential/)中提供了每种方法的详细说明。
# 也可以看看
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册