《深度学习实战:基于TensorFlow 2和Keras(原书第2版)》简洁且全面地介绍了现代神经网络、人工智能和深度学习技术,专门为软件工程师和数据科学家设计。第1章逐步介绍神经网络的基础知识。第2章比较TensorFlow 1.x和TensorFlow 2.0编程模型。第3章重点介绍回归。第4章介绍卷积神经网络及其在图像处理中的应用。第5章讨论了CNN在图像、视频、音频和文本处理方面的高级应用。第6章重点介绍生成对抗网络。第7章介绍词嵌入。第8章介绍基本嵌入方法的各种扩展。第9章介绍自动编码器。第10章深入研究无监督学习模型。第11章重点介绍强化学习。第12章介绍AutoML。第13章介绍用于移动设备和物联网的TensorFlow的基础知识。第14章讨论了云环境以及如何利用它来训练和部署模型。第15章讨论了深度学习背后的数学。第16章介绍TPU。本书内容丰富,易于理解,示例具有代表性,是学习深度学习的绝佳指南。
目录
- 前言
- 作者简介
- 审校者简介
- 第1章基于TensorFlow 2.0的神经网络基础1
- 1.1TensorFlow是什么1
- 1.2Keras是什么3
- 1.3TensorFlow 2.0有哪些重要的改动3
- 1.4神经网络概述4
- 1.5感知器5
- 1.6多层感知器—第一个神经网络示例6
- 1.6.1感知器训练的问题及对策6
- 1.6.2激活函数—sigmoid函数7
- 1.6.3激活函数—tanh函数7
- 1.6.4激活函数—ReLU函数8
- 1.6.5两个拓展激活函数—ELU函数和LeakyReLU函数8
- 1.6.6激活函数总结9
- 1.6.7神经网络到底是什么9
- 1.7示例—识别手写数字10
- 1.7.1独热编码10
- 1.7.2在TensorFlow 2.0中定义一个简单的神经网络10
- 1.7.3运行一个简单的TensorFlow 2.0神经网络并建立测试基线14
- 1.7.4使用隐藏层改进TensorFlow 2.0的简单神经网络15
- 1.7.5利用随机失活进一步改进Ten-sor Flow 2.0的简单神经网络18
- 1.7.6测试TensorFlow 2.0的不同优化器19
- 1.7.7增加epoch数24
- 1.7.8控制优化器学习率25
- 1.7.9增加内部隐藏神经元的数量25
- 1.7.10增加批量计算的大小26
- 1.7.11手写图识别实验总结26
- 1.8正则化27
- 1.8.1采用正则化以避免过拟合27
- 1.8.2理解批量归一化28
- 1.9Google Colab—CPU、GPU和TPU29
- 1.10情感分析31
- 1.11超参数调谐和AutoML33
- 1.12预测输出34
- 1.13反向传播的实用概述34
- 1.14我们学到了什么35
- 1.15迈向深度学习方式35
- 1.16参考文献36
- 第2章TensorFlow 1.x与2.x37
- 2.1理解TensorFlow 1.x37
- 2.1.1TensorFlow 1.x计算图程序结构37
- 2.1.2常量、变量和占位符的使用39
- 2.1.3操作对象示例40
- 2.1.4TensorFlow 2.x中的TensorFlow 1.x示例43
- 2.2理解TensorFlow 2.x44
- 2.2.1即刻执行44
- 2.2.2AutoGraph45
- 2.2.3Keras API的三种编程模型47
- 2.2.4回调49
- 2.2.5保存模型和权重50
- 2.2.6使用tf.data.datasets训练50
- 2.2.7tf.keras还是估算器53
- 2.2.8不规则张量55
- 2.2.9自定义训练55
- 2.2.10TensorFlow 2.x中的分布式训练56
- 2.2.11命名空间的改动59
- 2.2.121.x至2.x的转换59
- 2.2.13高效使用TensorFlow 2.x59
- 2.3TensorFlow 2.x生态系统60
- 2.4Keras还是tf.keras61
- 2.5小结62
- 第3章回归64
- 3.1什么是回归64
- 3.2使用线性回归进行预测65
- 3.2.1简单线性回归65
- 3.2.2多线性回归68
- 3.2.3多元线性回归68
- 3.3TensorFlow Estimator69
- 3.3.1特征列69
- 3.3.2输入函数70
- 3.3.3使用TensorFlow EstimatorAPI的MNIST70
- 3.4使用线性回归预测房价71
- 3.5分类任务和决策边界75
- 3.5.1logistic回归75
- 3.5.2MNIST数据集上的logistic回归76
- 3.6小结80
- 3.7参考文献80
- 第4章卷积神经网络81
- 4.1深度卷积神经网络81
- 4.1.1局部感受野82
- 4.1.2共享权重和偏差82
- 4.1.3数学示例83
- 4.1.4TensorFlow 2.x中的ConvNets83
- 4.1.5池化层84
- 4.2DCNN的示例—LeNet85
- 4.2.1TensorFlow 2.0中的LeNet代码85
- 4.2.2理解深度学习的力量90
- 4.3通过深度学习识别CIFAR-10图像91
- 4.3.1用更深的网络提高CIFAR-10的性能93
- 4.3.2用数据增强提高CIFAR-10的性能95
- 4.3.3基于CIFAR-10预测97
- 4.4用于大规模图像识别的超深度卷积网络98
- 4.4.1基于VGG16神经网络识别猫100
- 4.4.2使用tf.keras内置的VGG16 Net模块101
- 4.4.3复用预建深度学习模型以提取特征102
- 4.5小结103
- 4.6参考文献103
- 第5章高级卷积神经网络104
- 5.1计算机视觉104
- 5.1.1复杂任务的CNN组合104
- 5.1.2用tf.keras-estimator模型对Fashion-MNIST分类111
- 5.1.3在GPU上运行Fashion-MNISTtf.keras-estimator模型113
- 5.1.4用于迁移学习的Deep Inception-v3 Net114
- 5.1.5迁移学习:分类人和马117
- 5.1.6基于tf.keras和TensorFlow Hub的Application Zoo120
- 5.1.7其他CNN架构121
- 5.1.8回答有关图像的问题124
- 5.1.9风格迁移127
- 5.1.10创建DeepDream网络129
- 5.1.11查看深度网络学到的内容132
- 5.2视频133
- 5.3文本文件134
- 5.4音频和音乐137
- 5.5卷积运算小结141
- 5.5.1基本卷积神经网络141
- 5.5.2空洞卷积141
- 5.5.3可分离卷积141
- 5.5.4深度卷积142
- 5.5.5深度可分离卷积142
- 5.6胶囊网络142
- 5.6.1CNN有什么问题142
- 5.6.2Capsule网络有什么新功能143
- 5.7小结144
- 5.8参考文献144
- 第6章生成对抗网络146
- 6.1什么是GAN146
- 6.2深度卷积GAN152
- 6.3一些有趣的GAN架构161
- 6.3.1SRGAN161
- 6.3.2CycleGAN162
- 6.3.3InfoGAN164
- 6.4GAN的出色应用165
- 6.5TensorFlow 2.0中的CycleGAN168
- 6.6小结177
- 6.7参考文献177
- 第7章词嵌入178
- 7.1词嵌入的起源和基本原理178
- 7.2分布式表示179
- 7.3静态嵌入180
- 7.3.1Word2Vec181
- 7.3.2GloVe183
- 7.4使用gensim创建自己的嵌入184
- 7.5使用gensim探索嵌入空间185
- 7.6使用词嵌入检测垃圾短信188
- 7.6.1获取数据188
- 7.6.2准备待用数据189
- 7.6.3构建嵌入矩阵190
- 7.6.4定义垃圾短信分类器192
- 7.6.5训练和评估模型193
- 7.6.6运行垃圾短信检测器194
- 7.7神经嵌入—不只是单词195
- 7.7.1Item2Vec195
- 7.7.2node2vec196
- 7.8字符和子词嵌入201
- 7.9动态嵌入201
- 7.10句子和段落嵌入203
- 7.11基于语言模型的嵌入205
- 7.11.1使用BERT作为特征提取器207
- 7.11.2微调BERT208
- 7.11.3基于BERT命令行的分类209
- 7.11.4把BERT作为自己网络的一部分210
- 7.12小结213
- 7.13参考文献214
- 第8章循环神经网络217
- 8.1基本的RNN单元218
- 8.1.1时间反向传播219
- 8.1.2梯度消失和梯度爆炸221
- 8.2RNN单元变体221
- 8.2.1长短期记忆网络221
- 8.2.2门控循环单元223
- 8.2.3peephole LSTM223
- 8.3RNN变体224
- 8.3.1双向RNN224
- 8.3.2有状态RNN224
- 8.4RNN拓扑结构225
- 8.4.1一对多—学习生成文本226
- 8.4.2多对一—情感分析232
- 8.4.3多对多—POS标记238
- 8.5编码器-解码器架构—seq2seq245
- 8.6注意力机制255
- 8.7Transformer架构261
- 8.8小结264
- 8.9参考文献265
- 第9章自编码器267
- 9.1自编码器简介267
- 9.2香草自编码器269
- 9.2.1TensorFlow Keras层—定义自定义层269
- 9.2.2使用自编码器重构手写数字271
- 9.3稀疏自编码器274
- 9.4降噪自编码器276
- 9.5堆栈自编码器279
- 9.5.1用于去除图像噪声的卷积自编码器279
- 9.5.2Keras自编码器示例—句子向量283
- 9.6小结290
- 9.7参考文献290
- 第10章无监督学习292
- 10.1主成分分析292
- 10.1.1MNIST数据集上的PCA293
- 10.1.2TensorFlow嵌入式API295
- 10.1.3k-均值聚类296
- 10.1.4TensorFlow 2.0中的k-均值297
- 10.1.5k-均值的变体299
- 10.2自组织图300
- 10.3受限玻尔兹曼机306
- 10.3.1使用RBM重建图像307
- 10.3.2深度信念网络310
- 10.4变分自编码器311
- 10.5小结316
- 10.6参考文献316
- 第11章强化学习318
- 11.1概述318
- 11.1.1强化学习术语319
- 11.1.2深度强化学习算法321
- 11.1.3强化学习的成功案例324
- 11.2OpenAI Gym概述324
- 11.3深度Q网络328
- 11.3.1CartPole的深度Q网络329
- 11.3.2深度Q网络玩Atari游戏333
- 11.3.3DQN变体336
- 11.4深度确定性策略梯度339
- 11.5小结340
- 11.6参考文献340
- 第12章TensorFlow和云服务342
- 12.1云端深度学习342
- 12.1.1微软Azure343
- 12.1.2AWS344
- 12.1.3谷歌云平台346
- 12.1.4IBM云347
- 12.2云端虚拟机348
- 12.2.1亚马逊上的EC2348
- 12.2.2谷歌云平台上的计算实例349
- 12.2.3微软Azure上的虚拟机350
- 12.3云端的Jupyter Notebook351
- 12.3.1SageMaker351
- 12.3.2Google Colaboratory351
- 12.3.3微软Azure Notebook353
- 12.4用于生产的TensorFlow Extended354
- 12.4.1TFX管道354
- 12.4.2TFX管道组件355
- 12.4.3TFX库356
- 12.5TensorFlow企业版357
- 12.6小结357
- 12.7参考文献357
- 第13章用于移动设备和物联网的TensorFlow以及Tensor-Flow.js359
- 13.1TensorFlow Mobile359
- 13.2TensorFlow Lite359
- 13.2.1量化360
- 13.2.2FlatBuffer360
- 13.2.3Mobile转换器361
- 13.2.4移动优化解析器361
- 13.2.5支持平台361
- 13.2.6架构361
- 13.2.7使用TensorFlow Lite362
- 13.2.8应用程序的一个通用示例362
- 13.2.9使用GPU和加速器363
- 13.2.10应用程序示例363
- 13.3TensorFlow Lite中的预训练模型365
- 13.3.1图片分类366
- 13.3.2物体检测367
- 13.3.3姿势估计367
- 13.3.4智能回复367
- 13.3.5分割367
- 13.3.6风格迁移367
- 13.3.7文本分类367
- 13.3.8问答368
- 13.3.9使用移动GPU的注意事项368
- 13.4边缘联合学习概述369
- 13.5TensorFlow.js372
- 13.5.1普通TensorFlow.js372
- 13.5.2模型转换378
- 13.5.3预训练模型378
- 13.5.4Node.js379
- 13.6小结380
- 13.7参考文献380
- 第14章AutoML简介382
- 14.1什么是AutoML382
- 14.2实现AutoML383
- 14.3自动数据准备383
- 14.4自动特征工程384
- 14.5自动模型生成384
- 14.6AutoKeras386
- 14.7Google Cloud AutoML387
- 14.7.1使用Cloud AutoML—Tables解决方案387
- 14.7.2使用Cloud AutoML—Vision解决方案397
- 14.7.3使用Cloud AutoML— Text Classfication解决方案405
- 14.7.4使用Cloud AutoML—Translation解决方案408
- 14.7.5使用Cloud AutoML—Video Intelligence Classifi-cation解决方案413
- 14.7.6费用419
- 14.8将Google AutoML集成到Kaggle419
- 14.9小结420
- 14.10参考文献420
- 第15章深度学习相关的数学知识422
- 15.1历史422
- 15.2数学工具422
- 15.2.1随处可见的导数和梯度423
- 15.2.2梯度下降424
- 15.2.3链式法则424
- 15.2.4一些微分规则425
- 15.2.5矩阵运算425
- 15.3激活函数425
- 15.3.1sigmoid函数的导数426
- 15.3.2tanh函数的导数426
- 15.3.3ReLU函数的导数427
- 15.4反向传播427
- 15.4.1前向步骤429
- 15.4.2反向步骤429
- 15.4.3反向传播的局限性434
- 15.4.4交叉熵及其导数435
- 15.4.5批量梯度下降、随机梯度下降和小批量436
- 15.5关于反向传播和卷积的思考437
- 15.6关于反向传播和RNN的思考438
- 15.7关于TensorFlow和自动区分的说明440
- 15.8小结440
- 15.9参考文献441
- 第16章张量处理单元442
- 16.1CPU、GPU与TPU442
- 16.1.1CPU和GPU442
- 16.1.2TPU443
- 16.2三代TPU和边缘TPU444
- 16.2.1第一代TPU444
- 16.2.2第二代TPU447
- 16.2.3第三代TPU447
- 16.2.4边缘TPU448
- 16.3TPU性能448
- 16.4如何在Colab中使用TPU449
- 16.4.1检查TPU是否可用450
- 16.4.2用tf.data加载数据450
- 16.4.3建立模型并将其加载到TPU中451
- 16.5使用预训练的TPU模型453
- 16.6使用TensorFlow 2.1和夜间版455
- 16.7小结456
- 16.8参考文献457