《深度学习原理与PyTorch实战》按照从理论到实践,从实践到创造的顺序讲解深度学习领域的知识与技术,代码翔实,公式简单易懂。
《深度学习原理与PyTorch实战》第1章介绍深度学习的概念和目前的形势,第2章介绍Python编程语言基础,第3章使用Python语言计算极限、导数、级数等数学问题,第4章讲解深度学习的基本原理与PyTorch框架的基本使用,第5章和第6章详细讲述经典网络结构CNN和RCNN,第7~9章介绍自研深度学习框架,并详细讨论之前忽略的深度学习底层实现上的算法和细节,第10章介绍目前机器学习的前沿无监督学习,第11章主要讲解深度学习模型以Web应用形式部署的技术。
《深度学习原理与PyTorch实战》适合有高等数学基础、希望了解深度学习领域知识和技术的初学者阅读,也可作为相关培训机构的参考用书。
深度学习及神经网络算法涵盖较广的计算机和数学领域,本书系统讲述深度学习的原理及应用,并介绍目前流行的深度学习框架PyTorch。从理论知识到实战项目,内容翔实。
★通俗易懂 深度学习需要一些公式推导,本书在推导公式之前详细讲解前置知识,助力读者更好地理解理论知识。
★详略得当 本书在重点难点出配有视频讲解,扫描书中提供的二维码可观看对应章节的视频讲解;相关知识领域,例如CUDA,本书也会在讲解深度学习之余介绍它的基本使用,帮助读者全方位地了解深度学习这个领域。
★深入浅出 深入计算机硬件,给出简明结论。书中包含大量细心编写的代码,带领读者一起思考和实现理论。
深度学习及神经网络算法涵盖较广的计算机和数学领域,如果使用PyTorch、TensorFlow等深度框架,并记住它们的使用规则,可能能够应付大部分的情况并绕过许多细节,但知其然而不知其所以然,显然只是学习深度学习的第一步,通用的深度学习框架并不总是能满足所有的需求,如果要从使用到扩展乃至创造,就需要掌握远比简单使用更多的知识和细节。
得益于PyTorch、TensorFlow等深度学习框架都是开源的,有些时候通过发掘它们的源码来进阶相对简单,例如我想知道PyTorch是如何实现Adam的,可以将光标移到torch.optim.Adam类名上,使用快捷键Ctrl+B或Ctrl+鼠标跳转到声明,便可以发现它调用了torch.optim.functional.adam函数,同样进入torch.optim.functional.adam,在这里可以发现Adam的算法实现。但这种方法并不总是能得到想知道的答案(实际上,大部分时候都无法奏效)。
作为一个成熟的框架,PyTorch 1.7.0的源码已经难以全部阅读(C++/Python代码行数都在十万量级),且出于程序健壮性的考虑,其源码含有不少条件判断语句,对阅读也会造成一定的阻碍,因此对读者而言阅读本书中的代码和解读相比直接阅读深度学习框架的源码应该效率更高。在有自研深度框架的经验后,使用这些成熟框架显然会事半功倍,而且也能知道当它们无法满足要求时如何扩展。
深度学习理论由来已久,但限于计算机的运算速度近几年才被推上风口浪尖。深度学习中的大量运算往往以矩阵或张量为载体,它们的运算有高度的并行性,因此能够在具有许多计算核心的GPU上被加速,这也是深度学习兴起的现实基础。
如果你曾关注过显卡,那么可能也听说过“CUDA核心”这个名词,NVIDIA介绍一块新显卡时首先会说明它有多少个CUDA核心(或多少个流处理器)。CUDA是NVIDIA公司推出的计算平台,目前主流的深度框架如TensorFlow和PyTorch都是以CUDA为核心,本书也会在介绍深度学习之余介绍它的基本用法,帮助读者全方位地了解深度学习这个领域。
书中包含大量细心编写的代码,带着读者一起思考。本书在重点及难点处配有视频讲解,扫描书中提供的二维码可观看对应章节的视频讲解。
本书绝大多数理论辅以代码实现,同时也建议读者先按照自己对理论的理解编写对应的程序,若有疑问再参考本书的代码。因为编程是不允许对知识模棱两可的,理解有偏差时编写的代码往往会输出显而易见的错误结果甚至直接报错无法运行。换言之,如果能将理论转换为代码,通常对那个概念就有一个初步的认识了。
因作者水平有限,书中难免存在疏漏,敬请读者批评指正。
张伟振,主要从事系统架构设计、深度学习在计算机视觉任务中的应用方面的研究,在计算机图形学、大型软件架构设计、后台开发、桌面应用、游戏、Web应用等领域亦有较丰富经验。
第1章 人工智能的新篇章
1.1 引言
1.2 过去人工智能的困境
1.3 神经网络
1.4 我们都是炼丹师
1.4.1 机器的力量
1.4.2 遍地开花的深度学习
1.5 深度监督学习三部曲
1.6 深度学习框架
1.6.1 常见的深度学习框架
1.6.2 PyTorch的优势
第2章 Python基础(29min)
2.1 Python简介
2.1.1 Python语言
2.1.2 编译器和解释器
2.1.3 Python的哲学
2.1.4 Python的优缺点
2.2 Python Hello World
2.2.1 安装Python解释器
2.2.2 Hello World程序
2.3 Python基本语法
2.3.1 变量
2.3.2 函数
2.3.3 基本数据类型
2.3.4 条件控制
2.3.5 列表
2.3.6 错误和异常
2.4 标准库
2.4.1 math
2.4.2 文件读写和os库
2.5 Python面向对象
2.5.1 花名册
2.5.2 使用class关键字声明类
2.5.3 限定函数参数的类型
2.5.4 静态方法
2.6 包和模块
2.6.1 安装第三方库
2.6.2 创建包和模块
2.6.3 使用第三方库
2.6.4 打包Python源代码
2.7 开发环境
2.7.1 Jupyter Notebook
2.7.2 安装PyCharm
第3章 实用数学(11min)
3.1 线性代数
3.1.1 向量
3.1.2 矩阵
3.1.3 使用矩阵的理由
3.2 高等数学
3.2.1 函数
3.2.2 函数的极限
3.2.3 导数
3.2.4 导函数
3.2.5 泰勒公式
3.2.6 偏导数
3.2.7 梯度
第4章 深度学习原理和PyTorch基础(85min)
4.1 深度学习三部曲
4.1.1 准备数据
4.1.2 定义模型、损失函数和优化器
……
第5章 卷积神经网络(38min)
第6章 序列模型(93min)
第7章 算法基础
第8章 C++基础
第9章 自研深度学习框架
第10章 无监督学习
第11章 案例:游戏AI