内容介绍
这是一本理论与实践兼顾的深度学习著作,它通过精心的内容组织和丰富的案例讲解,能让读者零基础入门,并迅速晋级为有一定理论基础和项目实战能力的高手。
基础方面,不仅介绍了Keras等各种深度学习框架的使用和开发环境的搭建,还对深度学习的基础知识做了全面讲解;
理论方面,详细讲解了全连接神经网络、卷积神经网络、循环神经网络、自编码器和生成式对抗网络等核心神经网络的原理和应用;
应用层面,不仅讲解了如何用Keras开发各种深度学习模型,而且还讲解了深度学习在图像处理和文本处理两大核心场景的应用;
实战方面,每个深度学习模型原理的背后都有精心设计的Keras实现代码,每章都有多个综合性案例,读者可以在调试和执行代码的过程中掌握深度学习模型设计与开发的各种方法和技巧。
本书内容结构合理,重点突出;写作方式循序渐进,易于读者理解;行文风格幽默风趣,读起来不枯燥。
目录
- 前言
- 第1章准备深度学习的环境1
- 1.1机器学习与深度学习1
- 1.2主流深度学习框架介绍4
- 1.2.1TensorFlow4
- 1.2.2Keras5
- 1.2.3Caffe5
- 1.2.4PyTorch6
- 1.2.5Theano6
- 1.2.6CNTK6
- 1.2.7MXNet7
- 1.2.8ONNX7
- 1.3配置深度学习的软件环境8
- 1.3.1安装Anaconda8
- 1.3.2在Anaconda中安装TensorFlow8
- 1.3.3在Anaconda中安装Keras10
- 1.3.4安装R和RStudio10
- 1.3.5在RStudio中安装TensorFlow12
- 1.3.6在RStudio中安装Keras12
- 1.4Keras构建深度学习模型13
- 1.4.1MNIST数据集13
- 1.4.2数据预处理14
- 1.4.3模型建立及训练16
- 1.4.4模型评估及预测18
- 1.5本章小结22
- 第2章深度学习简介23
- 2.1神经网络基础23
- 2.1.1神经元23
- 2.1.2激活函数24
- 2.1.3神经网络的拓扑结构30
- 2.1.4神经网络的主要类型31
- 2.1.5损失函数32
- 2.2优化网络的方法33
- 2.2.1梯度下降算法33
- 2.2.2自适应学习率算法37
- 2.3防止模型过拟合42
- 2.3.1过拟合与欠拟合42
- 2.3.2正则化的方法43
- 2.3.3数据拆分44
- 2.3.4Dropout45
- 2.4综合实例:电信流失用户预测46
- 2.4.1数据预处理46
- 2.4.2选择优化器47
- 2.4.3增加内部隐藏层神经元数量48
- 2.4.4采用正则化避免过拟合49
- 2.5本章小结52
- 第3章如何用Keras开发深度学习模型53
- 3.1Keras模型的生命周期53
- 3.1.1数据预处理53
- 3.1.2定义网络56
- 3.1.3编译网络58
- 3.1.4训练网络58
- 3.1.5评估网络60
- 3.1.6做出预测61
- 3.2Keras模型61
- 3.2.1序贯模型61
- 3.2.2使用函数式API创建的模型63
- 3.3模型可视化66
- 3.3.1网络拓扑可视化66
- 3.3.2模型训练可视化67
- 3.3.3TensorBoard可视化70
- 3.4Keras中的回调函数77
- 3.4.1回调函数介绍77
- 3.3.2使用回调函数寻找最优模型80
- 3.5模型保存及序列化82
- 3.5.1使用HDF5格式保存模型83
- 3.5.2使用JSON格式保存模型87
- 3.5.3使用YAML格式保存模型88
- 3.6本章小结88
- 第4章深度学习的图像数据预处理89
- 4.1图像处理EBImage包89
- 4.1.1图像读取与保存89
- 4.1.2图像对象和矩阵91
- 4.1.3色彩管理94
- 4.1.4图像处理97
- 4.1.5空间变换99
- 4.1.6图像滤波102
- 4.1.7形态运算105
- 4.1.8图像分割106
- 4.2利用Keras进行图像预处理107
- 4.2.1图像读取与保存107
- 4.2.2图像生成器image_data_generator110
- 4.2.3image_data_generator实例115
- 4.3综合实例:对彩色花图像进行分类118
- 4.3.1图像数据读取及探索118
- 4.3.2MLP模型建立及预测122
- 4.3.3CNN模型建立与预测124
- 4.3.4利用数据增强改善CNN模型126
- 4.4本章小结128
- 第5章全连接神经网络的经典实例129
- 5.1回归问题实例:波士顿房价预测129
- 5.1.1波士顿房价数据描述129
- 5.1.2波士顿房价数据预处理131
- 5.1.3波士顿房价预测131
- 5.2多分类实例:鸢尾花分类134
- 5.2.1鸢尾花数据描述134
- 5.2.2鸢尾花数据预处理136
- 5.2.3鸢尾花分类建模137
- 5.3二分类实例:印第安人糖尿病诊断139
- 5.3.1印第安人糖尿病数据描述139
- 5.3.2印第安人糖尿病数据预处理141
- 5.3.3印第安人糖尿病诊断建模142
- 5.4二分类实例:泰坦尼克号上旅客生存预测144
- 5.4.1泰坦尼克号的旅客数据描述145
- 5.4.2泰坦尼克号的旅客数据预处理146
- 5.4.3生存预测建模149
- 5.5多分类实例:彩色手写数字图像识别151
- 5.5.1彩色手写数字图像数据描述151
- 5.5.2彩色手写数字图像数据预处理152
- 5.5.3彩色手写数字图像数据建模155
- 5.6本章小结158
- 第6章卷积神经网络及图像分类159
- 6.1卷积神经网络原理159
- 6.1.1卷积层161
- 6.1.2卷积层的Keras实现163
- 6.1.3池化层167
- 6.1.4池化层的Keras实现168
- 6.1.5全连接层171
- 6.2多分类实例:小数据集的图像识别171
- 6.2.1导入本地图像数据171
- 6.2.2图像数据预处理173
- 6.2.3建立全连接神经网络模型识别小数据集图像175
- 6.2.4建立简单卷积神经网络识别小数据集图像177
- 6.2.5建立复杂卷积神经网络识别小数据集图像180
- 6.3多分类实例:彩色手写数字图像识别183
- 6.3.1导入及处理本地手写数字图像183
- 6.3.2MNIST数据预处理185
- 6.3.3构建简单卷积神经网络识别彩色手写数字186
- 6.3.4构建复杂卷积神经网络识别彩色手写数字189
- 6.4多分类实例:CIFAR-10图像识别192
- 6.4.1CIFAR-10数据描述192
- 6.4.2加载CIFAR-10数据192
- 6.4.3CIFAR-10数据预处理194
- 6.4.4构建简单卷积神经网络识别CIFAR-10图像195
- 6.4.5构建复杂卷积神经网络识别CIFAR-10图像199
- 6.5本章小结204
- 第7章循环神经网络205
- 7.1简单循环网络205
- 7.1.1简单循环网络基本原理206
- 7.1.2简单循环网络的Keras实现207
- 7.1.3多分类实例:SimpleRNN实现手写数字识别208
- 7.1.4回归问题实例:SimpleRNN预测纽约出生人口数量211
- 7.2长短期记忆网络(LSTM)216
- 7.2.1LSTM基本原理216
- 7.2.2LSTM的Keras实现218
- 7.2.3回归问题实例:LSTM预测股价221
- 7.3门控循环单元(GRU)228
- 7.3.1GRU基本原理228
- 7.3.2GRU的Keras实现229
- 7.3.3回归问题实例:基于GRU网络的温度预测230
- 7.4本章小结235
- 第8章自编码器236
- 8.1自编码器介绍236
- 8.1.1自编码器的基本结构237
- 8.1.2使用Keras建立简单自编码器238
- 8.1.3稀疏自编码器242
- 8.1.4降噪自编码器245
- 8.1.5栈式自编码器248
- 8.2实例:使用自编码器预测信用风险252
- 8.2.1数据理解252
- 8.2.2数据预处理254
- 8.2.3构建自编码器254
- 8.2.4模型训练255
- 8.2.5模型预测255
- 8.3实例:使用自编码器建立推荐系统258
- 8.3.1数据理解259
- 8.3.2数据预处理260
- 8.3.3构建自编码器261
- 8.3.4模型训练263
- 8.3.5模型预测263
- 8.4本章小结264
- 第9章生成式对抗网络265
- 9.1生成式对抗网络简介265
- 9.2实例:使用GAN生成手写数字268
- 9.2.1数据准备268
- 9.2.2构建生成器269
- 9.2.3构建判别器271
- 9.2.4生成GAN模型271
- 9.2.5训练GAN模型273
- 9.3实例:深度卷积生成式对抗网络277
- 9.3.1构建生成器279
- 9.3.2构建判别器280
- 9.3.3编译模型281
- 9.3.4训练DCGAN模型282
- 9.4本章小结285
- 第10章使用R语言进行文本挖掘286
- 10.1文本挖掘流程286
- 10.2相关R包简介及安装287
- 10.2.1tm包简介及安装287
- 10.2.2tmcn包简介及安装287
- 10.2.3Rwordseg包简介及安装289
- 10.2.4jiebaR包简介及安装290
- 10.2.5tidytext包简介及安装290
- 10.3tm包快速上手290
- 10.3.1数据读写290
- 10.3.2语料库转换292
- 10.3.3语料库过滤293
- 10.3.4元数据管理294
- 10.3.5词条-文档关系矩阵296
- 10.4tmcn包快速上手298
- 10.4.1中文语料资源298
- 10.4.2中文编码转换300
- 10.4.3字符操作301
- 10.5Rwordseg包快速上手302
- 10.5.1中文分词302
- 10.5.2添加和卸载自定义词典303
- 10.6jiebaR包快速上手305
- 10.6.1分词引擎305
- 10.6.2自定义词典308
- 10.6.3停止词过滤312
- 10.6.4关键词提取313
- 10.7tidytext包快速上手315
- 10.7.1整洁文本格式315
- 10.7.2使用tidy处理中国四大名著320
- 10.7.3对中国四大名著进行词频统计322
- 10.7.4非整洁格式转换325
- 10.8本章小结327
- 第11章如何使用Keras处理文本数据328
- 11.1使用text_to_word_sequence分词328
- 11.2使用独热编码329
- 11.3分词器Tokenizer331
- 11.4使用pad_sequences填充文本序列335
- 11.5词嵌入337
- 11.5.1学习词嵌入337
- 11.5.2实例:学习词嵌入338
- 11.5.3预训练词嵌入342
- 11.5.4实例:预训练GloVe嵌入343
- 11.6本章小结348
- 第12章情感分析实例:IMDB影评情感分析349
- 12.1IMDB数据集349
- 12.1.1加载IMDB数据集349
- 12.1.2查看IMDB数据集350
- 12.2利用机器学习进行情感分析352
- 12.2.1数据预处理352
- 12.2.2机器学习预测情感353
- 12.3利用深度学习进行情感分析356
- 12.3.1数据预处理356
- 12.3.2多层感知器模型357
- 12.3.3卷积神经网络模型359
- 12.3.4RNN模型361
- 12.3.5LSTM模型363
- 12.3.6GRU模型365
- 12.4本章小结367
- 第13章中文文本分类实例:新浪新闻分类实例368
- 13.1SPORT数据集368
- 13.2利用机器学习进行文本分类374
- 13.2.1数据预处理374
- 13.2.2数据分区376
- 13.2.3机器学习建模376
- 13.3利用深度学习进行文本分类378
- 13.3.1数据预处理378
- 13.3.2多层感知器模型379
- 13.3.3一维卷积神经网络模型381
- 13.3.4RNN模型383
- 13.3.5LSTM模型385
- 13.3.6GRU模型386
- 13.3.7双向LSTM模型388
- 13.3.8比较深度学习模型的预测效果389
- 13.4本章小结390
- 第14章通过预训练模型实现迁移学习391
- 14.1迁移学习概述391
- 14.2Keras预训练模型概述393
- 14.3VGGNet卷积网络模型393
- 14.3.1VGGNet概述394
- 14.3.2加载预训练VGG16网络395
- 14.3.3预测单张图像内容397
- 14.3.4预测多张图像内容400
- 14.3.5提取预训练网络输出特征实现花卉图像分类器402
- 14.4ResNet卷积网络模型410
- 14.4.1ResNet概述410
- 14.4.2ResNet50的Keras实现411
- 14.5本章小结413