目录 第1章绪论与PyTorch基础/1 1.1人工智能与神经网络1 1.2深度学习2 1.2.1什么是深度学习2 1.2.2深度学习的发展过程3 1.2.3深度学习的基础网络4 1.3建立PyTorch的开发环境4 1.3.1Anaconda与Python的安装4 1.3.2PyCharm和PyTorch的安装5 1.3.3PyTorch的Hello World程序6 1.4张量基础7 1.4.1张量的定义及其物理含义7 1.4.2张量的切片操作10 1.4.3面向张量的数学函数13 1.4.4张量的变形16 1.4.5张量的常用运算17 1.4.6张量的广播机制21 1.4.7梯度的自动计算22 1.4.8张量与其他对象的相互转换23 1.4.9张量的拼接24 1.5初识PyTorch框架25 1.5.1一个简单的网络模型25 1.5.2访问网络模型的各个网络层27 1.5.3访问模型参数及模型保存和加载方法29 1.6本章小结30 1.7习题31 第2章感知器——神经元/32 2.1感知器的定义32 2.2激活函数33深度学习理论与应用目录2.3感知器的训练34 2.3.1监督学习和无监督学习34 2.3.2面向回归问题的训练方法35 2.3.3面向分类问题的训练方法43 2.4使用PyTorch框架46 2.4.1PyTorch框架的作用47 2.4.2使用PyTorch框架实现感知器47 2.5本章小结52 2.6习题53 第3章全连接神经网络/54 3.1构建一个简单的全连接神经网络——解决二分类问题54 3.1.1一个简单全连接神经网络的构建和训练54 3.1.2程序代码解释及网络层的构建方法56 3.2全连接神经网络的构造方法59 3.2.1网络层的定义59 3.2.2网络结构的实现60 3.2.3从网络结构判断网络的功能62 3.3几种主流的损失函数62 3.3.1nn.CrossEntropyLoss()和nn.NLLLoss()函数63 3.3.2nn.MSELoss()函数66 3.3.3nn.BCELoss()和nn.BCEWithLogitsLoss()函数66 3.3.4nn.L1Loss()函数67 3.4网络模型的训练与测试68 3.4.1数据集分割68 3.4.2数据打包69 3.4.3网络模型的训练方法70 3.4.4梯度累加的训练方法71 3.4.5学习率衰减在训练中的应用72 3.4.6网络模型的测试74 3.4.7应用案例——波士顿房价预测76 3.5正向计算和反向梯度传播的理论分析81 3.5.1正向计算81 3.5.2梯度反向传播与参数更新85 3.6本章小结89 3.7习题90 第4章卷积神经网络/91 4.1一个简单的卷积神经网络——手写数字识别91 4.1.1程序代码91 4.1.2代码解释94 4.2卷积神经网络的主要操作96 4.2.1单通道卷积96 4.2.2多通道卷积100 4.2.3卷积操作的PyTorch代码实现103 4.2.4池化操作及其PyTorch代码实现105 4.2.5relu()激活函数及其应用107 4.2.6感受野109 4.3卷积神经网络的设计方法109 4.3.1基本设计原则109 4.3.2网络结构查看和参数量计算110 4.3.3一个猫狗图像分类示例111 4.4过拟合及其解决方法116 4.5本章小结117 4.6习题117 第5章若干经典CNN预训练模型及其迁移方法/119 5.1一个使用VGG16的图像识别程序119 5.1.1程序代码119 5.1.2代码解释122 5.2经典卷积神经网络的结构124 5.2.1卷积神经网络的发展过程124 5.2.2AlexNet网络125 5.2.3VGGNet网络126 5.2.4GoogLeNet网络与1×1卷积核128 5.2.5ResNet网络130 5.2.6EfficientNet网络131 5.3预训练模型的迁移方法132 5.3.1预训练网络迁移的基本原理132 5.3.2VGG16的迁移案例133 5.3.3GoogLeNet的迁移案例136 5.3.4ResNet的迁移案例140 5.3.5EfficientNet的迁移案例142 5.4本章小结145 5.5习题145 第6章深度卷积神经网络的应用案例/146 6.1人脸识别146 6.1.1人脸识别的设计思路146 6.1.2人脸识别程序147 6.2语义分割152 6.2.1从零开始构建语义分割网络152 6.2.2使用预训练模型构建语义分割网络160 6.3目标检测161 6.3.1从零开始构建目标检测网络161 6.3.2使用Fasterrcnn构建目标检测网络165 6.4生成对抗网络172 6.4.1生成手写数字图片173 6.4.2生成花卉图片176 6.4.3条件性生成对抗网络179 6.5本章小结182 6.6习题182 第7章循环神经网络/183 7.1一个简单的循环神经网络——航空旅客出行人数预测183 7.1.1程序代码183 7.1.2代码解释187 7.2循环神经网络应用188 7.2.1循环神经网络的基本结构188 7.2.2从“零”开始构建一个循环神经网络190 7.3长短时记忆网络(LSTM)192 7.3.1LSTM的结构和特点192 7.3.2LSTM的使用方法195 7.3.3深度循环神经网络199 7.3.4双向循环神经网络199 7.3.5LSTM的变体——GRU200 7.4文本的表示201 7.4.1词的独热表示201 7.4.2Word2Vec词向量202 7.4.3词嵌入表示202 7.5基于LSTM的文本分类206 7.6基于LSTM的文本生成210 7.6.1语言模型与文本生成210 7.6.2类不平衡问题211 7.6.3文本生成案例212 7.7本章小结216 7.8习题216 第8章基于预训练模型的自然语言处理/217 8.1Seq2Seq结构与注意力机制217 8.1.1Seq2Seq结构217 8.1.2注意力机制221 8.2Transformer及其在NLP中的应用225 8.2.1Transformer中的注意力机制225 8.2.2Transformer的结构226 8.2.3Transformer的位置编码与嵌入226 8.2.4Transformer的使用方法229 8.2.5Transformer应用案例232 8.3BERT及其在NLP中的应用238 8.3.1关于BERT238 8.3.2BERT的使用方法240 8.3.3基于BERT的文本分类243 8.3.4基于BERT的阅读理解247 8.4基于GPT的文本生成254 8.4.1关于GPT254 8.4.2使用GPT2生成英文文本——直接使用255 8.4.3使用GPT2生成中文文本——微调方法256 8.5视觉Transformer(ViT)260 8.5.1关于ViT260 8.5.2ViT预训练模型的使用方法260 8.5.3基于ViT的图像分类262 8.6ChatGPT及其使用方法264 8.6.1关于ChatGPT264 8.6.2ChatGPT的使用方法266 8.7本章小结269 8.8习题269 第9章面向解释的深度神经网络可视化方法/270 9.1CNN各网络层输出的可视化270 9.2CNN模型决策原因的可视化方法274 9.2.1基于类别权重的类激活图(CAM)274 9.2.2基于梯度的类激活图(CAM)277 9.3面向NLP任务的可视化方法281 9.3.1NLP任务中注意力机制可视化的一般方法281 9.3.2自注意力机制的可视化282 9.4本章小结284 9.5习题285 第10章多模态学习与多模态数据分类/286 10.1多模态学习286 10.1.1多模态学习的发展过程286 10.1.2多模态学习的主要任务287 10.2多模态数据分类288 10.2.1文本特征提取方法289 10.2.2图像特征提取方法289 10.2.3多模态数据融合方法289 10.3多模态数据分类案例291 10.4本章小结296 10.5习题297 参考文献/298