| 作者 |
| 吴茂贵 郁明敏 杨本法 李涛 张粤磊薛云峰 |
| 丛书名 |
| 智能系统与技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9781911059303 |
| 简要 |
| 简介 |
| 这是一本基于最新的Python和PyTorch版本的深度学习著作,旨在帮助读者低门槛进入深度学习领域,轻松速掌握深度学习的理论知识和实践方法,快速实现从入门到进阶的转变。 本书是多位人工智能技术专家和大数据技术专家多年工作经验的结晶,从工具使用、技术原理、算法设计、案例实现等多个维度对深度学习进行了系统的讲解。内容选择上,广泛涉猎、重点突出、注重实战;内容安排上,实例切入、由浅入深、循序渐进;表达形式上,深度抽象、化繁为简、用图说话。 本书共16章,分为三部分: 第一部分(第1~4章) PyTorch基础 首先讲解了机器学习和数据科学中必然会用到的工具Numpy的使用,然后从多个角度讲解了Pytorch的必备基础知识,最后详细讲解了Pytorch的神经网络工具箱和数据处理工具箱。 第二部分(第5~8章) 深度学习基础 这部分从技术原理、算法设计、实践技巧等维度讲解了机器学习和深度学习的经典理理论、算法以及提升深度学习模型性能的多种技巧,涵盖视觉处理、NLP和生成式深度学习等主题。 第三部分(第9~16章) 深度学习实践 这部分从工程实践的角度讲解了深度学习的工程方法和在一些热门领域的实践方案,具体包括人脸识别、图像修复、图像增强、风格迁移、中英文互译、生成式对抗网络、对抗攻击、强化学习、深度强化学习等内容。 ---------------------------深度学习实践:基于Caffe的解析--------------------------- . 本书主要介绍Caffe的技术原理和一些高级使用技巧,首先介绍深度学习的趋势和业内动态。然后是关于Caffe的基础知识,介绍如何安装和武器库。在理解Caffe算法基础上,介绍Caffe的技术原理和特点,包括数学知识和设计知识。之后是Caffe各层使用的进阶,介绍每一层是什么,作用和实现及其使用的一般性原则和原理。最后是Caffe深度学习多任务网络,介绍多任务网络的现状,基本的网络配置,高级网络配置和网络解决方案的进阶。本书实践内容和现有系统进行无缝对接,并提供了各种调参技巧的黑魔法。 |
| 目录 |
---------------------------Python深度学习:基于PyTorch--------------------------- 前言 第一部分 PyTorch基础 第1章 Numpy基础2 1.1 生成Numpy数组3 1.1.1 从已有数据中创建数组3 1.1.2 利用random模块生成数组4 1.1.3 创建特定形状的多维数组5 1.1.4 利用arange、linspace函数生成数组6 1.2 获取元素7 1.3 Numpy的算术运算9 1.3.1 对应元素相乘9 1.3.2 点积运算10 1.4 数组变形11 1.4.1 更改数组的形状11 1.4.2 合并数组14 1.5 批量处理16 1.6 通用函数17 1.7 广播机制19 1.8 小结20 第2章 PyTorch基础21 2.1 为何选择PyTorch?21 2.2 安装配置22 2.2.1 安装CPU版PyTorch22 2.2.2 安装GPU版PyTorch24 2.3 Jupyter Notebook环境配置26 2.4 Numpy与Tensor28 2.4.1 Tensor概述28 2.4.2 创建Tensor28 2.4.3 修改Tensor形状30 2.4.4 索引操作31 2.4.5 广播机制32 2.4.6 逐元素操作32 2.4.7 归并操作33 2.4.8 比较操作34 2.4.9 矩阵操作35 2.4.10 PyTorch与Numpy比较35 2.5 Tensor与Autograd36 2.5.1 自动求导要点36 2.5.2 计算图37 2.5.3 标量反向传播38 2.5.4 非标量反向传播39 2.6 使用Numpy实现机器学习41 2.7 使用Tensor及Antograd实现机器学习44 2.8 使用TensorFlow架构46 2.9 小结48 第3章 PyTorch神经网络工具箱49 3.1 神经网络核心组件49 3.2 实现神经网络实例50 3.2.1 背景说明51 3.2.2 准备数据52 3.2.3 可视化源数据53 3.2.4 构建模型53 3.2.5 训练模型54 3.3 如何构建神经网络?56 3.3.1 构建网络层56 3.3.2 前向传播57 3.3.3 反向传播57 3.3.4 训练模型58 3.4 神经网络工具箱nn58 3.4.1 nn.Module58 3.4.2 nn.functional58 3.5 优化器59 3.6 动态修改学习率参数60 3.7 优化器比较60 3.8 小结62 第4章 PyTorch数据处理工具箱63 4.1 数据处理工具箱概述63 4.2 utils.data简介64 4.3 torchvision简介66 4.3.1 transforms67 4.3.2 ImageFolder67 4.4 可视化工具69 4.4.1 tensorboardX简介69 4.4.2 用tensorboardX可视化神经网络71 4.4.3 用tensorboardX可视化损失值72 4.4.4 用tensorboardX可视化特征图73 4.5 本章小结74 第二部分 深度学习基础 第5章 机器学习基础76 5.1 机器学习的基本任务76 5.1.1 监督学习77 5.1.2 无监督学习77 5.1.3 半监督学习78 5.1.4 强化学习78 5.2 机器学习一般流程78 5.2.1 明确目标79 5.2.2 收集数据79 5.2.3 数据探索与预处理79 5.2.4 选择模型及损失函数80 5.2.5 评估及优化模型81 5.3 过拟合与欠拟合81 5.3.1 权重正则化82 5.3.2 Dropout正则化83 5.3.3 批量正则化86 5.3.4 权重初始化88 5.4 选择合适激活函数89 5.5 选择合适的损失函数90 5.6 选择合适优化器92 5.6.1 传统梯度优化的不足93 5.6.2 动量算法94 5.6.3 AdaGrad算法96 5.6.4 RMSProp算法97 5.6.5 Adam算法98 5.7 GPU加速99 5.7.1 单GPU加速100 5.7.2 多GPU加速101 5.7.3 使用GPU注意事项104 5.8 本章小结104 第6章 视觉处理基础105 6.1 卷积神经网络简介105 6.2 卷积层107 6.2.1 卷积核108 6.2.2 步幅109 6.2.3 填充111 6.2.4 多通道上的卷积111 6.2.5 激活函数113 6.2.6 卷积函数113 6.2.7 转置卷积114 6.3 池化层115 6.3.1 局部池化116 6.3.2 全局池化117 6.4 现代经典网络119 6.4.1 LeNet-5模型119 6.4.2 AlexNet模型120 6.4.3 VGG模型121 6.4.4 GoogleNet模型122 6.4.5 ResNet模型123 6.4.6 胶囊网络简介124 6.5 PyTorch实现CIFAR-10多分类125 6.5.1 数据集说明125 6.5.2 加载数据125 6.5.3 构建网络127 6.5.4 训练模型128 6.5.5 测试模型129 6.5.6 采用全局平均池化130 6.5.7 像Keras一样显示各层参数131 6.6 模型集成提升性能133 6.6.1 使用模型134 6.6.2 集成方法134 6.6.3 集成效果135 6.7 使用现代经典模型提升性能136 6.8 本章小结137 第7章 自然语言处理基础138 7.1 循环神经网络基本结构138 7.2 前向传播与随时间反向传播140 7.3 循环神经网络变种143 7.3.1 LSTM144 7.3.2 GRU145 7.3.3 Bi-RNN146 7.4 循环神经网络的PyTorch实现146 7.4.1 RNN实现147 7.4.2 LSTM实现149 7.4.3 GRU实现151 7.5 文本数据处理152 7.6 词嵌入153 7.6.1 Word2Vec原理154 7.6.2 CBOW模型155 7.6.3 Skip-Gram模型155 7.7 PyTorch实现词性判别156 7.7.1 词性判别主要步骤156 7.7.2 数据预处理157 7.7.3 构建网络157 7.7.4 训练网络158 7.7.5 测试模型160 7.8 用LSTM预测股票行情160 7.8.1 导入数据160 7.8.2 数据概览161 7.8.3 预处理数据162 7.8.4 定义模型163 7.8.5 训练模型163 7.8.6 测试模型164 7.9 循环神经网络应用场景165 7.10 小结166 第8章 生成式深度学习167 8.1 用变分自编码器生成图像167 8.1.1 自编码器168 8.1.2 变分自编码器168 8.1.3 用变分自编码器生成图像169 8.2 GAN简介173 8.2.1 GAN架构173 8.2.2 GAN的损失函数174 8.3 用GAN生成图像175 8.3.1 判别器175 8.3.2 生成器175 8.3.3 训练模型175 8.3.4 可视化结果177 8.4 VAE与GAN的优缺点178 8.5 ConditionGAN179 8.5.1 CGAN的架构179 8.5.2 CGAN生成器180 8.5.3 CGAN判别器180 8.5.4 CGAN损失函数181 8.5.5 CGAN可视化181 8.5.6 查看指定标签的数据182 8.5.7 可视化损失值182 8.6 DCGAN183 8.7 提升GAN训练效果的一些技巧184 8.8 小结185 第三部分 深度学习实践 第9章 人脸检测与识别188 9.1 人脸识别一般流程188 9.2 人脸检测189 9.2.1 目标检测189 9.2.2 人脸定位191 9.2.3 人脸对齐191 9.2.4 MTCNN算法192 9.3 特征提取193 9.4 人脸识别198 9.4.1 人脸识别主要原理198 9.4.2 人脸识别发展198 9.5 PyTorch实现人脸检测与识别199 9.5.1 验证检测代码199 9.5.2 检测图像200 9.5.3 检测后进行预处理200 9.5.4 查看经检测后的图像201 9.5.5 人脸识别202 9.6 小结202 第10章 迁移学习实例203 10.1 迁移学习简介203 10.2 特征提取204 10.2.1 PyTorch提供的预处理模块205 10.2.2 特征提取实例206 10.3 数据增强209 10.3.1 按比例缩放209 10.3.2 裁剪210 10.3.3 翻转210 10.3.4 改变颜色211 10.3.5 组合多种增强方法211 10.4 微调实例212 10.4.1 数据预处理212 10.4.2 加载预训练模型213 10.4.3 修改分类器213 10.4.4 选择损失函数及优化器213 10.4.5 训练及验证模型214 10.5 清除图像中的雾霾214 10.6 小结217 第11章 神经网络机器翻译实例218 11.1 Encoder-Decoder模型原理218 11.2 注意力框架220 11.3 PyTorch实现注意力Decoder224 11.3.1 构建Encoder224 11.3.2 构建简单Decoder225 11.3.3 构建注意力Decoder226 11.4 用注意力机制实现中英文互译227 11.4.1 导入需要的模块228 11.4.2 数据预处理228 11.4.3 构建模型231 11.4.4 训练模型234 11.4.5 随机采样,对模型进行测试235 11.4.6 可视化注意力236 11.5 小结237 第12章 实战生成式模型238 12.1 DeepDream模型238 12.1.1 Deep Dream原理238 12.1.2 DeepDream算法流程239 12.1.3 用PyTorch实现Deep Dream240 12.2 风格迁移243 12.2.1 内容损失244 12.2.2 风格损失245 12.2.3 用PyTorch实现神经网络风格迁移247 12.3 PyTorch实现图像修复252 12.3.1 网络结构252 12.3.2 损失函数252 12.3.3 图像修复实例253 12.4 PyTorch实现DiscoGAN255 12.4.1 DiscoGAN架构256 12.4.2 损失函数258 12.4.3 DiscoGAN实现258 12.4.4 用PyTorch实现从边框生成鞋子260 12.5 小结262 第13章 Caffe2模型迁移实例263 13.1 Caffe2简介263 13.2 Caffe如何升级到Caffe2264 13.3 PyTorch如何迁移到Caffe2265 13.4 小结268 第14章 AI新方向:对抗攻击269 14.1 对抗攻击简介269 14.1.1 白盒攻击与黑盒攻击270 14.1.2 无目标攻击与有目标攻击270 14.2 常见对抗样本生成方式271 14.2.1 快速梯度符号法271 14.2.2 快速梯度算法271 14.3 PyTorch实现对抗攻击272 14.3.1 实现无目标攻击272 14.3.2 实现有目标攻击274 14.4 对抗攻击和防御措施276 14.4.1 对抗攻击276 14.4.2 常见防御方法分类276 14.5 总结277 第15章 强化学习278 15.1 强化学习简介278 15.2 Q-Learning原理281 15.2.1 Q-Learning主要流程281 15.2.2 Q函数282 15.2.3 贪婪策略283 15.3 用PyTorch实现Q-Learning283 15.3.1 定义Q-Learing主函数283 15.3.2 执行Q-Learing284 15.4 SARSA算法285 15.4.1 SARSA算法主要步骤285 15.4.2 用PyTorch实现SARSA算法286 15.5 小结287 第16章 深度强化学习288 16.1 DQN算法原理288 16.1.1 Q-Learning方法的局限性289 16.1.2 用DL处理RL需要解决的问题289 16.1.3 用DQN解决方法289 16.1.4 定义损失函数290 16.1.5 DQN的经验回放机制290 16.1.6 目标网络290 16.1.7 网络模型291 16.1.8 DQN算法291 16.2 用PyTorch实现DQN算法292 16.3 小结295 附录A PyTorch0.4版本变更296 附录B AI在各行业的最新应用301 ---------------------------深度学习实践:基于Caffe的解析--------------------------- 前言 第1章 深度学习简介 1 1.1 深度学习的历史 1 1.2 深度学习工具简介 4 1.3 深度学习的未来趋势 12 第2章 搭建你的Caffe武器库 13 2.1 硬件选型 13 2.2 Caffe在Windows下的安装 14 2.3 Caffe在Linux下的安装 16 2.3.1 Linux安装 16 2.3.2 Nvidia CUDA Toolkit的安装(*.deb方法) 17 2.3.3 Caffe的安装和测试 20 2.4 OpenCV的安装和编译 23 2.4.1 OpenCV的下载 23 2.4.2 配置环境变量 24 2.5 Boost库的安装和编译 27 2.6 Python相关库的安装 31 2.7 MATLAB接口的配置 33 2.8 其他库的安装 44 2.8.1 LMDB的编译与安装 44 2.8.2 LevelDB的编译与安装 51 2.8.3 glog的编译与安装 57 2.8.4 安装gflags 63 第3章 Caffe的简单训练 69 3.1 Caffe转化数据工具的使用介绍 69 3.1.1 命令参数介绍 69 3.1.2 生成文件列表 70 3.1.3 使用的Linux命令简介 70 3.1.4 生成文件结果 71 3.1.5 图片参数组详解 71 3.2 Caffe提取特征的工具使用说明 72 3.3 Caffe训练需要的几个部件 73 3.3.1 网络proto文件的编写 73 3.3.2 Solver配置 74 3.3.3 训练脚本的编写 76 3.3.4 训练log解析 76 3.4 Caffe简单训练分类任务 79 3.5 测试训练结果 86 3.6 使用训练好的模型进行预测 87 第4章 认识深度学习网络中的层 97 4.1 卷积层的作用与类别 97 4.1.1 卷积层的作用 97 4.1.2 卷积分类 98 4.2 激活层的作用与类别 99 4.2.1 激活函数的定义及相关概念 99 4.2.2 激活函数的类别 101 4.3 池化层的作用与类别 101 4.3.1 池化层的历史 101 4.3.2 池化层的作用 102 4.3.3 池化层分类 103 4.4 全连接层的作用与类别 105 4.5 dropout层的作用 106 4.6 损失函数层 106 第5章 Caffe的框架设计 110 5.1 Caffe中CPU和GPU结构的融合 110 5.1.1 SyncedMemory函数及其功能 110 5.1.2 SyncedMemory类的作用 112 5.2 Caffe训练时层的各个成员函数的调用顺序 112 5.3 Caffe网络构建函数的解析 115 5.4 Caffe层如何使用proto文件实现反射机制 116 5.4.1 工厂模式 116 5.4.2 层的创建 118 5.5 Caffe的调用流程图及函数顺序导视 122 5.6 Caffe框架使用的编码思想 125 5.6.1 Caffe的总体结构 125 5.6.2 Caffe数据存储设计 128 第6章 基础数学知识 130 6.1 卷积层的数学公式及求导 130 6.2 激活层的数学公式图像及求导 132 6.3 三种池化层的数学公式及反向计算 134 6.4 全连接层的数学公式及求导 135 6.4.1 全连接层的前向计算及公式推导 135 6.4.2 全连接层的反向传播及公式推导 136 6.5 反卷积层的数学公式及求导 137 第7章 卷积层和池化层的使用 139 7.1 卷积层参数初始化介绍 139 7.2 池化层的物理意义 141 7.3 卷积层和池化层输出计算及参数说明 141 7.4 实践:在Caffe框架下用Prototxt定义卷积层和池化层 142 7.4.1 卷积层参数的编写 142 7.4.2 必须设置的参数 143 7.4.3 其他可选的设置参数 143 7.4.4 卷积参数编写具体示例 144 7.4.5 卷积参数编写小建议 145 第8章 激活函数的介绍 146 8.1 用ReLU解决sigmoid的缺陷 146 8.2 ReLU及其变种的对比 148 8.3 实践:在Caffe框架下用Prototxt定义激活函数 150 8.3.1 ReLU 150 8.3.2 PReLU 150 8.3.3 Sigmoid 151 第9章 损失函数 152 9.1 contrastive_loss函数和对应层的介绍和使用场景 152 9.2 multinomial_logistic_loss函数和对应层的介绍和使用说明 154 9.3 sigmoid_cross_entropy函数和对应层的介绍和使用说明 155 9.4 softmax_loss函数和对应层的介绍和使用说明 158 9.5 euclidean_loss函数和对应层的介绍和使用说明 161 9.6 hinge_loss函数和对应层的介绍和使用说明 162 9.7 infogain_loss函数和对应层的介绍和使用说明 163 9.8 TripletLoss的添加及其使用 165 9.8.1 TripletLoss的思想 165 9.8.2 TripletLoss梯度推导 166 9.8.3 新增加TripletLossLayer 167 9.9 Coupled Cluster Loss的添加及其使用 176 9.9.1 增加loss层 176 9.9.2 实现具体示例 177 第10章 Batch Normalize层的使用 194 10.1 batch_normalize层的原理和作用 194 10.2 batch_normalize层的优势 196 10.3 常见网络结构batch_normalize层的位置 197 10.4 proto的具体写法 202 10.5 其他归一化层的介绍 204 第11章 回归网络的构建 205 11.1 如何生成回归网络训练数据 205 11.2 回归任务和分类任务的异同点 206 11.3 回归网络收敛性的判断 207 11.4 回归任务与级联模型 210 第12章 多任务网络的构建 214 12.1 多任务历史 214 12.2 多任务网络的数据生成 216 12.3 如何简单建立多任务 216 12.4 近年的多任务深度学习网络 217 12.5 多任务中通用指导性调参和网络构建结论 221 12.5.1 如何避免出现多任务后性能下降的情况 221 12.5.2 怎样构建性能提升的多任务网络 222 第13章 图像检索和人脸识别系统实践 223 13.1 深度学习如何构建成自动化服务,在内存中做测试 223 13.2 Poco库构建服务器指南 234 13.3 深度学习服务和传统服务的区别 237 13.4 深度学习服务如何与传统后台服务进行交互 237 13.5 人脸识别的数据准备和所使用的相关技术 238 13.6 图像检索任务的介绍 243 13.7 在Caffe中添加数据输入层 245 13.7.1 具体示例 246 13.7.2 ImageDataParameter参数含义简介 247 13.7.3 新增加参数的含义简介 248 13.7.4 将新增加的参数加入LayerParameter 248 13.7.5 代码的编写之必写函数 248 13.7.6 用户自定义函数的编写 249 13.7.7 用户自定义数据的读取 250 13.7.8 代码的实现 250 第14章 深度学习的调参技巧总结 265 14.1 不变数据的调参的基本原则 265 14.2 Caffe fine-tuning调参的原则和方法 265 14.3 综合数据调参的指导性建议 267 14.4 2012年以后的经典网络结构概述 271 14.4.1 Google的Inception结构 271 14.4.2 微软的Residual Network结构 279 |