本书针对所提出的问题提供技术解决方案,并提供对这些解决方案的详细解释。此外,还讨论了使用TensorFlow、PyTorch、Keras和CNTK等流行开源框架针对实际问题解决方案相应的优缺点。本书也介绍了人工神经网络基本概念及其相关技术,包括经典的网络拓扑等。本书主要目的是为Python程序员提供较为详细的实战方案,以便将深度学习应用于常见和不常见实际问题场景。
本书包括14章:(1) 编程环境、GPU 计算、云解决方案和深度学习框架;(2)前馈神经网络;(3)卷积神经网络;(4)递归神经网络;(5)强化学习;(6)生成对抗网络;(7)计算机视觉;(8)自然语言处理;(9)语音识别和视频分析;(10)时间序列和结构化数据;(11)游戏智能体和机器人;(12)超参数选择、调优和神经网络学习;(13)网络内部构造;(14)预训练模型。
本书的主要特点:
1)提供训练不同神经网络模型并调整模型以期获得佳性能的实战方案;
2)使用诸如TensorFlow、Caffe、Keras、Theano的Python框架进行自然语言处理、计算机视觉识别等;
3)Python深度学习中的常见以及不常见问题的解决指南。
通过本书将会学到:
1)在Python中实现不同的人工神经网络模型;
2)选择诸如PyTorch、TensorFlow、MXNet和Keras等优的Python开源框架来进行深度学习;
3)应用神经网络内部细节相关的提示和技巧,以提高学习成效;
4)巩固机器学习原理并将其应用于深度学习领域;
5)重用Python代码段并将其应用于解决日常问题;
6)评估每个解决方案的成本/收益和性能影响。
作者简介
Indra den Bakker是一位经验丰富的深度学习工程师和培训师。他是23insights平台的创始人,这是NVIDIA所属孵化项目计划的一部分,这是一个机器学习构建解决方案的初创型计划,可以改变世界上重要的行业。在开放课程平台Udacity,他指导了在深度学习和相关领域攻读微学位(Nanodegree)的学生,他还负责审查学生的实习项目。Indra拥有计算智能背景,并在创建23insights平台之前作为IPG Mediabrands的品牌代理以及Screen6的数据科学家若干年。
目录
译者序
原书前言
第 1章 编程环境、GPU计算、云解决方案和深度学习框架 //1
1.1 简介 //1
1.2 搭建一个深度学习环境 //2
1.3 在 AWS上启动实例 //2
1.4 在 GCP上启动实例 //3
1.5 安装 CUDA和 cuDNN //4
1.6 安装 Anaconda和库文件 //6
1.7 连接服务器上的 Jupyter Notebooks //7
1.8 日臻伟平图书专营店
1.9 直观地用 Keras建立网络 //10
1.10 使用 PyTorch的 RNN动态计算图 //12
1.11 用 CNTK实现高性能模型 //14
1.12 使用 MXNet构建高效的模型 //15
1.13 使用简单、高效的 Gluon编码定义网络 //17
第 2章 前馈神经网络 //19
2.1 简介 //19
2.2 理解感知器 //19
2.3 实现一个单层神经网络 //23
2.4 构建一个多层神经网络 //27
2.5 开始使用激活函数 //30
2.6 关于隐层和隐层神经元的实验 //35
2.7 实现一个自动编码器 //38
2.8 调整损失函数 //41
2.9 测试不同的优化器 //44
2.10 使用正则化技术提高泛化能力 //47
2.11 添加 Dropout以防止过拟合 //51
第 3章 卷积神经网络 //56
3.1 简介 //56
3.2 开始使用滤波器和参数共享 //56
3.3 应用层合并技术 //60
3.4 使用批量标准化进行优化 //62
3.5 理解填充和步长 //66
3.6 试验不同类型的初始化 //72
3.7 实现卷积自动编码器 //76
3.8 将一维 CNN应用于文本 //79
第 4章 递归神经网络 //81
4.1 简介 //81
4.2 实现一个简单的 RNN //82
4.3 添加 LSTM //84
4.4 使用 GRU //86
4.5 实现双向 RNN //89
4.6 字符级文本生成 //91
第 5章 强化学习 //95
5.1 简介 //95
5.2 实现策略梯度 //95
5.3 实现深度Q学习算法 //102
第 6章 生成对抗网络 //109
6.1 简介 //109
6.2 了解 GAN //109
6.3 实现 DCGAN //112
6.4 使用 SRGAN来提高图像分辨率 //117
第 7章 计算机视觉 //125
7.1 简介 //125
7.2 利用计算机视觉技术增广图像 //125
7.3 图像中的目标分类 //130
7.4 目标在图像中的本地化 //134
7.5 实时检测框架 //139
7.6 用 U-net将图像分类 //139
7.7 语义分割与场景理解 //143
7.8 寻找人脸面部关键点 //147
7.9 人脸识别 //151
7.10 将样式转换为图像 //157
第 8章 自然语言处理 //162
8.1 简介 //162
8.2 情绪分析 //162
8.3 句子翻译 //165
8.4 文本摘要 //169
第 9章 语音识别和视频分析 //174
9.1 简介 //174
9.2 从零开始实现语音识别流程 //174
9.3 使用语音识别技术辨别讲话人 //177
9.4 使用深度学习理解视频 //181
第 10章 时间序列和结构化数据 //185
10.1 简介 //185
10.2 使用神经网络预测股票价格 //185
10.3 预测共享单车需求 //189
10.4 使用浅层神经网络进行二元分类 //192
第 11章 游戏智能体和机器人 //194
11.1 简介 //194
11.2 通过端到端学习来驾驶汽车 //194
11.3 通过深度强化学习来玩游戏 //199
11.4 用 GA优化超参数 //205
第 12章 超参数选择、调优和神经网络学习 //211
12.1 简介 //211
12.2 用 TensorBoard和 Keras可视化训练过程 //211
12.3 使用批量和小批量工作 //215
12.4 使用网格搜索调整参数 //219
12.5 学习率和学习率调度 //221
12.6 比较优化器 //224
12.7 确定网络的深度 //227
12.8 添加 Dropout以防止过拟合 //227
12.9 通过数据增广使模型更加鲁棒 //232
12.10 利用 TTA来提高精度 //234
第 13章 网络内部构造 //235
13.1 简介 //235
13.2 用 TensorBoard可视化训练过程 //235
13.3 用 TensorBoard可视化网络结构 //239
13.4 分析网络权重等 //239
13.5 冻结层 //244
13.6 存储网络结构并训练权重 //246
第 14章 预训练模型 //250
14.1 简介 //250
14.2 使用 GoogLeNet/Inception进行大规模视觉识别 //250
14.3 用 ResNet提取瓶颈特征 //252
14.4 对新类别使用预训练的 VGG模型 //253
14.5 用 Xception细调 //256