深度学习训练营 21天实战TensorFlow+Keras+scikit-learn
上QQ阅读APP看书,第一时间看更新

前言

当下我们的生活和工作已经被人工智能和深度学习的技术所包围,例如人机对话、人脸识别过闸机或付款、各种语言间的自动翻译、自动驾驶汽车、淘宝的个性化推荐等,各大科技公司都在努力发展的“千人千面”精细化产品也离不开人工智能(它背后的技术就是深度学习)。

坦白来讲,深度学习就是对深度神经网络架构的学习,基于神经网络设计出各种架构的模型,如卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)、生成对抗网络(GAN)等。每一种神经网络在不同的领域起着不同的作用,例如在图像识别领域的人脸识别一般使用CNN;语言翻译或一些需要有记忆状态的领域一般用RNN或者LSTM;需要使用神经网络模型生成各种图像和视频的领域就可以用GAN。

自从Google公司开源了TensorFlow深度学习框架后,深度学习这门技术成为广大开发者、科研人员和企业最实用的技术;之后不久,基于TensorFlow深度学习框架编写而成的Keras深度学习框架就诞生了,Keras使得编写神经网络模型更简单、更易理解、更高效,只需几行代码就可以完成一个CNN模型。Keras有着快速编写神经网络模型的原型的称号,其后端之一就是TensorFlow。对这两个框架的掌握,现在基本已成为各大公司对深度学习工程师的招聘要求的标配。

本书特色

本书内容以实践、应用为导向,以实际编写代码和运行通过为准则,无须求解方程,无须理解复杂的公式。本书以项目编码实践为主,无方程公式的理论知识,只求读者能又快又准地运行代码并看到模型最终效果,在仅配置普通CPU的计算机上也能训练模型和完成所有的项目实践。

本书介绍的21个项目选取了目前比较流行的应用案例,为读者呈现生动有趣的实践应用。当初学者掌握了一定的统计学知识后,亟需的就是神经网络模型的项目编写练习,此时学习本书再适合不过了。

本书内容分为三大类,分别是预测类、识别类和生成类,各部分内容中均有从浅入深的项目案例。每个项目的每一行代码,都是笔者实际运行通过的。有的地方代码过多,我已将之写到了Python脚本文件中,读者需要下载相关脚本文件,引入后再运行。每个神经网络模型的每一层都有激活函数和损失函数,在隐藏层时用以调节权重和误差,在输出层时用以计算概率。

本书内容及体系结构

第1章 房价预测

本章通过对波士顿和北京的房价进行分析和预测,讲解如何使用scikit-learn(sklearn)进行网格搜索来训练和预测,以及如何使用Keras构建神经网络模型来训练、评估和预测。

第2章 泰坦尼克号生还预测

本章通过对泰坦尼克号的船上乘员的人数情况进行数据清洗与分割,讲解如何使用决策树、逻辑回归、梯度提升分类器、神经网络模型来构建、训练、评估和预测模型。

第3章 共享单车使用情况预测

本章将根据Capital Bikeshare共享单车公司的用户骑行数据绘制多种图表来进行呈现、分析和总结,最终编写一个基于TensorFlow的长短期记忆网络模型来讲解如何进行预测。

第4章 福彩3D中奖预测

本章通过分析从福彩开奖的网站上获取的从2004年10月到2018年7月的3D中奖数据(读者也可以自行获取更多的数据),构建基于Keras的时间序列和多层感知器模型来讲解如何进行中奖预测。

第5章 股票走势预测

本章主要是通过从美国纳斯达克股票交易市场获取的百度和微软的股票价格走势数据,对从上市开始到2018年的股票收盘价格数据进行观察和分析,假定购买策略,构建Prophet模型来讲解如何进行预测。

第6章 垃圾邮件预测

本章通过判定给定的邮件是否是垃圾邮件来进行分析,然后构建多项式朴素贝叶斯模型和多层感知器模型来讲解如何预测邮件是否是垃圾邮件。

第7章 影评的情感分析

本章通过分析和预测给定的电影评论是正面的还是负面的,讲解如何基于TensorFlow和Keras构建长短期记忆网络模型来分析影评是正面的或者负面的。

第8章 语言翻译

本章通过从网上下载的英文和法文的平行语料库来进行机器翻译,讲解如何基于Keras的长短期记忆网络构建从法文到英文的语言神经机器翻译引擎。

第9章 MNIST手写数字识别

本章将介绍如何识别开源的MNIST手写数字数据库的图像,并基于TensorFlow和Keras构建多层感知器和卷积神经网络模型,讲解如何进行训练、评估和识别。

第10章 狗的品种识别

本章将介绍通过由120个品种的狗的图像数据库构建的数据集进行图像基本分析,然后构建Keras的卷积神经网络识别模型,再构建基于InceptionV3预训练模型的迁移学习技术来讲解如何进行训练、评估和识别。

第11章 人脸识别

本章通过提供的LFW人脸图像数据集,进行图像中的人脸对齐,然后训练模型、预测模型,还讲解了如何使用流行的开源库FaceNet和FaceRecognition来进行实时的人脸识别。

第12章 人脸面部表情识别

本章将讲解如何使用fer2013的数据集构建卷积神经网络模型来进行人脸面部表情识别。首先是对单张图片中的人脸面部表情进行识别,然后再对视频中的人脸面部表情进行识别,最后通过开启摄像头实时识别拍摄到的人脸面部表情。

第13章 人体姿态识别

本章将介绍OpenPose开源库,它是由CMU计算机感知实验室研发并开源的。我们将依据OpenPose开源库基于TensorFlow和Keras的实现版本,对单张图片、视频和摄像头拍摄到的画面进行人体姿态识别。

第14章 皮肤癌分类

本章将讲解如何通过ISIC2017:Skin Lesion Analysis提供的3种皮肤癌症的图像数据集进行构建卷积神经网络模型的分类和预测,基于TensorFlow的迁移学习技术和Keras的CNN模型进行识别。

第15章 对象检测

本章将讲解如何使用Mask R-CNN Inception COCO、Faster R-CNN Inception COCO和SSD MobileNet COCO,对COCO图像数据集里实时拍摄的画面中的对象进行识别。

第16章 看图说话

本章将讲解如何通过MSCOCO图像数据集,使每张图像都有对应的图像文本描述,使用Show and Tell模型来实现模型的构建,生成TFRecords图像格式数据,训练、评估和测试模型。

第17章 生成电视剧剧本

本章讲解如何使用The Simpsons剧本的某一个片段作为训练数据集,通过TensorFlow构建循环神经网络和Textgenrnn来实现电视剧剧本的生成。

第18章 风格迁移

本章将讲解如何通过给定的大师画作和自己提供的图片来构建TensorFlow和Keras的神经网络模型,把大师的画作风格迁移到指定的图片上。

第19章 生成人脸

本章将讲解如何使用TensorFlow构建生成对抗网络模型,先用于简单的MNIST手写数字图像识别,然后实现基于LFW人脸图像数据集的人脸生成。

第20章 图像超分辨率

本章将讲解如何使用LFW人脸图像数据集和srez开源库构建深度对抗生成网络模型,训练和生成高度清晰的图像(放大图像4倍也不模糊)。

第21章 移花接木

本章将讲解如何通过提供的3种图片数据集,基于CycleGAN技术来实现根据橘子生成苹果、根据马生成斑马,以及将男性人脸面貌和女性人脸面貌进行互换。

读者对象

◇ 统计学从业者。

◇ 人工智能研究人员。

◇ 深度学习开发者。

◇ 机器学习开发者。

◇ 人工智能工程师。

◇ 互联网行业的创业者。

阅读本书的前提

本书介绍的项目主要运行环境配置信息和安装流程分别如下。

①Linux系统的分支Ubuntu,版本16.04.5。

②虚拟环境virtualenv,版本16.0.0。

③Python脚本编程语言,版本Python3.6.6。

④试验代码运行环境Jupyter Notebook,版本5.4.0。

⑤深度学习框架TensorFlow,版本1.10.1;Keras,版本2.1.6。

各个项目不同的安装包版本信息,在各个项目开始的时候会提及。

在写这本书的时间里,各种技术框架和工具不断地更新和迭代,各自的版本也升级了,所以如果读者在本书的项目中会看到所提及的一些技术框架和工具的版本高于这里提及的版本,请以具体项目里所提及的版本为主;这么做的目的是让初学者适应和习惯持续更新的技术框架和工具。

本书对应的每一章节的资源或代码的Github仓库下载地址如下。

https://github.com/21-projects-for-deep-learning/MyBook

致谢

感谢互联网时代,感恩深度学习领域的先驱者们为神经网络技术的基础架构做出的贡献,包括但不限于Geoffrey Hinton(杰弗里·希尔顿)、Yann LeCun(杨立昂)、Yoshua Bengio(约书亚·本吉奥)、Andrew Ng(吴恩达)、Francois Chollet(弗朗索瓦·肖莱)等资深专家。Google作为全球科技公司对开源做出的贡献是巨大的,让无数的开发者和研究者可以沿着Google前沿的技术一起前进,也让我们可以为此做出微薄的贡献。

还要真诚地感谢北京源智天下科技有限公司的许亚楠女士,她在知名博客网站上看到了我的博客,和我进行了详细的沟通,经过她的认可和热情的推动后,我决定编写和出版本书。也感谢王蕾编辑,因为她的重视和诚恳的建议,本书终于完美收官。

最后,由于作者水平和成书时间所限,本书难免存有疏漏和不当之处,敬请专家和读者给出批评和指正。

张强

2019年5月