新書推薦:
《
石油帝国的兴衰:英国的工业化与去工业化
》
售價:NT$
445.0
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
根源、制度和秩序:从老子到黄老学(王中江著作系列)
》
售價:NT$
550.0
《
索恩丛书·北宋政治与保守主义:司马光的从政与思想(1019~1086)
》
售價:NT$
345.0
《
掌故家的心事
》
售價:NT$
390.0
《
农为邦本——农业历史与传统中国
》
售價:NT$
340.0
《
小麦文明:“黄金石油”争夺战
》
售價:NT$
445.0
《
悬壶杂记全集:老中医多年临证经验总结(套装3册) 中医医案诊疗思路和处方药应用
》
售價:NT$
614.0
|
內容簡介: |
本书以Python语言和Tensorflow为工具,由浅入深地讲述了深度学习程序设计的基本原理、算法和思考问题的方法,内容包括自顶向下的程序设计、递归程序设计、面向对象的程序设计、反向传播算法、三层神经网络、卷积神经网络、循环神经网络、生成式对抗网络和目标检测等。本书重在研究代码背后深刻的计算机理论和数学原理,试图说明代码是对理论和思想的实现手段,而不是目的。学以致用是本书的宗旨,提高读者编程水平和动手能力是本书的目的。本书通过大量有趣的实例,说明了理论对深度学习程序设计实践的指导意义。
|
目錄:
|
序
前言
第1 章 程序设计方法...00
1.1 自顶向下的程序设计...00
1.1.1 问题分解和自顶向下的程序设计方法...00
1.1.2 五猴分桃问题...00
1.1.3 猜姓氏问题...00
1.1.4 囚犯问题...00
1.1.5 扑克牌问题...0
1.2 递归程序设计...0
1.2.1 河内塔问题...0
1.2.2 兔子问题...0
1.2.3 字符串匹配问题...0
1.2.4 组合问题...0
1.2.5 人字形铁路问题...0
1.3 面向对象的程序设计...0
1.3.1 方法重定义和分数...0
1.3.2 二十四点问题...0
1.4 结束语...0
第2 章 反向传播算法...0
2.1 导数和导数的应用...0
2.1.1 导数...0
2.1.2 梯度下降法求函数的最小值...0
2.1.3 牛顿法求平方根...0
2.1.4 复合函数和链式法则...0
2.1.5 多元函数和全微分方程...0
2.1.6 反向传播算法...0
2.1.7 梯度...0
2.1.8 分段求导...0
2.2 自动求导和人工智能框架...0
2.2.1 表达式和自动求偏导...0
2.2.2 表达式求值...0
2.2.3 求解任意方程...0
2.2.4 求解任意方程组...0
2.2.5 求解任意函数的极小值...0
2.2.6 张量、计算图和人工智能框架...0
2.3 结束语...0
第3 章 神经元网络初步...0
3.1 Tensorflow基本概念...0
3.1.1 计算图、张量、常数和变量...0
3.1.2 会话、运行...0
3.1.3 占位符...0
3.1.4 矩阵算术运算...0
3.1.5 矩阵运算的广播...0
3.1.6 TF矩阵运算...0
3.1.7 形状和操作...0
3.1.8 关系运算和逻辑运算...0
3.2 优化器和计算图...0
3.2.1 梯度和优化器...0
3.2.2 求解平方根...0
3.2.3 计算图...0
3.3 三层神经网络...0
3.3.1 神经元网络训练算法...0
3.3.2 线性变换和激活函数...0
3.3.3 矩阵乘法和全连接...0
3.3.4 激活函数...0
3.3.5 全连接和Relu的梯度...0
3.3.6 求正弦...0
3.3.7 BGD、SGD和MBGD...0
3.3.8 三层神经网络模型...0
3.4 用三层神经网络拟合任意一个函数...0
3.4.1 三层神经网络拟合一元函数...0
3.4.2 样本、训练和预测...0
3.4.3 中间层神经元个数和样本数量之间
的关系...0
3.4.4 自变量越界会发生什么...0
3.4.5 同时拟合cosx、sinx...0
3.4.6 拟合多元函数...0
3.4.7 过拟合...0
3.5 手写数字识别...0
3.5.1 手写数字样本集合MNIST...0
3.5.2 独热向量...0
3.5.3 3种损失函数...0
3.5.4 softmax函数...0
3.5.5 保存和恢复模型...0
3.5.6 验证模型...0
3.5.7 测试和使用模型...0
3.6 结束语...0
第4 章 卷积神经网络...0
4.1 卷积...0
4.1.1 一维卷积...0
4.1.2 二维卷积...
4.1.3 通道...
4.1.4 TF对卷积的第一种实现...
4.1.5 TF对卷积的第二种实现...
4.1.6 卷积的实质...
4.2 池化操作...
4.2.1 最大值池化和平均值池化...
4.2.2 池化操作的梯度...
4.3 用CNN实现手写数字识别...
4.3.1 模型的结构...
4.3.2 模型参数数量和计算量...
4.3.3 关于全连接和Dropout...
4.3.4 用Tensorboard监视训练...
4.4 手写数字生成...
4.4.1 生成问题...
4.4.2 VAE模型和语义...
4.4.3 反卷积操作...
4.4.4 网络的结构...
4.4.5 动量...
4.4.6 控制依赖...
4.4.7 预测...
4.5 条件VAE模型...
4.5.1 CVAE模型...
4.5.2 条件式手写数字生成模型...
4.6 使用GPU...
4.6.1 单GPU和nvidia-smi命令...
4.6.2 多GPU和重名问题...
4.6.3 多GPU的梯度...
4.6.4 多GPU训练...
4.6.5 多GPU预测...
4.7 残差神经网络...
4.7.1 残差神经网络的实现...
4.7.2 BN操作...
4.8 表情识别...
4.8.1 样本...
4.8.2 通用超级框架...
4.8.3 模型...
4.9 人脸识别和人脸对比...
4.9.1 人脸识别...
4.9.2 简单人脸对比...
4.9.3 简单人脸对比的实现...
4.9.4 法向量和夹角余弦...
4.9.5 基于夹角余弦的人脸对比...
4.10 语义分割和实例分割...
4.10.1 什么是语义分割和实例分割...
4.10.2 多分类问题...
4.10.3 U型网络...
4.10.4 语义分割和实例分割的实现...
4.10.5 点到点的语义分割和实例分割...
4.11 其他CNN模型...
4.12 优化器...
4.12.1 GradientDescentOptimizer...
4.12.2 MomentumOptimizer...
4.12.3 RMSPropOptimizer...
4.12.4 AdamOptimizer...
4.12.5 AdagradOptimizer...
4.12.6 AdadeltaOptimizer...
4.13 结束语...
第5 章 循环神经网络...
5.1 什么是循环神经网络...
5.2 RNN的结构...
5.2.1 简单RNN模型...
5.2.2 多层RNN...
5.3 诗歌生成器...
5.3.1 样本预处理...
5.3.2 字向量...
5.3.3 可洗牌的DataSet...
5.3.4 生成诗歌...
5.4 LSTM模型...
5.4.1 基本LSTM模型...
5.4.2 LSTM变体之一——Peephole...
5.4.3 LSTM变体之二——GRU...
|
內容試閱:
|
能够透过现象看本质,通过结果分析原因,这是人类拥有智能的主要表现。现象和结果就展现在我们面前,是显式(Explicit)的,很容易获取;本质和原因藏在它们身后,是隐式(Implicit)的,不容易被发现。深度学习就是一门这样的科学,它试图以人工神经网络(Artificial Neural Network,ANN)为工具,揭示网络参数与样本之间的本质关系。但在这样做之前,我们有必要理解什么是梯度下降法(GD)和反向传播算法(BP)。它们是揭示上述关系的关键,是本书从第2章开始所有内容的核心。梯度概念来源于微分和偏导,所以读者需要拥有一定的微积分的知识。最起码,需要知道什么是切线和切线的斜率,以及如何计算偏导。
也许这并不是一个很高的要求,但作为计算机专业的科研和教育工作者,我们深感很多大学生并不是没有学习理论,而是不会在实践中使用理论。例如,学了微积分,却不知道能派什么用场;学了编译原理,以为只有在开发编译系统中才有用。可是,你知道吗?这些理论在深度学习中却很重要。
所以,学以致用是本书的宗旨。本书不仅要讲理论和理论的实质,还要讲如何用代码实现这些理论。读者需要一边看书,一边在计算机上动手编程,同时提高自己的理论水平和动手能力。
提到计算机理论和数学原理,可能有些读者心里会打退堂鼓。其实,计算机理论和数学原理是用来指导我们工作的,能够帮助我们更轻松地完成深度学习编程任务。它们都是为“懒人”服务的,也是像我一样的“懒人”发明的。因为懒得应付程序设计或者软件开发过程中千变万化的复杂情况, 我们就从其中提炼、抽象出了一些固定不变的东西,这些就是计算机理论和数学原理。所以,如果你想有技巧地偷懒,就学习计算机理论和数学原理吧,它会给你打开一个新天地,让你从一个更高的角度看深度学习、人工智能和程序设计。
所以,尽管本书的确会用到Python编程和人工智能框架Tensorflow(TF),也会讲解部分具体的语法和约定,但是都不是重点。重点是问题分解方法、递归的实质、梯度下降法、反向传播原理、三层神经网络、模型的结构和训练方法以及梯度分析。Python和TF不过是实现它们的工具。如果愿意,你也可以使用其他语言或者其他框架。
本书的目的是提高读者对深度学习基础理论的深刻理解。对很多基础性理论、数学、方法和算法的理解,例如面向对象、梯度、递归程序设计方法、数的进制等,都是编者30年来从事计算机科学理论研究和教学工作经验的总结。对读者来说,学习这些经验的价值可能超过了学习深度学习本身。
本书用到的Python版本为3.5以上,Tensorflow版本为1.9.0~1.14.0。由于TF框架还在飞速更新中,所以不要奇怪可能有些代码不能在你的机器上运行。我们建议把TF的版本设置在上述版本范围之内,或者上网搜索一下怎么做。
虽然本书已经提供了所有的代码,但建议读者一开始不要看代码,而是跟随本书一行一行地手写代码,这对学习深度学习是有很大好处的。如果程序总是出错,却又找不到原因,这时才有必要下载代码,然后运行看看结果如何。
请读者先安装好PyCharm社区版或以上版本,这是我们的集成开发环境。最好准备一个GPU,否则单GPU和多GPU训练就无法学习。书中用到的包主要是numpy和GPU版的Tensorflow,这些包可以通过pip安装。
本书写作过程中得到了李珂、赵昕、雷璐丹、潘志锐、权甲和吴鹏辉等人的大力协助,谢谢你们!
让我们从五猴分桃问题开始,一步一步地开启奇妙的深度学习之旅吧。
|
|