具体描述
深度学习为世界上的智能系统(比如Google Voice、Siri和Alexa)提供了动力。随着硬件(如GPU)和软件框架(如PyTorch、Keras、TensorFlow和CNTK)的进步以及大数据的可用性,人们在文本、视觉和分析等领域更容易实施相应问题的解决方案。
本书对当今前沿的深度学习库PyTorch进行了讲解。凭借其易学习性、高效性以及与Python开发的天然亲近性,PyTorch获得了深度学习研究人员以及数据科学家们的关注。本书从PyTorch的安装讲起,然后介绍了为现代深度学习提供驱动力的多个基础模块,还介绍了使用CNN、RNN、LSTM以及其他网络模型解决问题的方法。本书对多个先进的深度学习架构的概念(比如ResNet、DenseNet、Inception和Seq2Seq)进行了阐述,但没有深挖其背后的数学细节。与GPU计算相关的知识、使用PyTorch训练模型的方法,以及用来生成文本和图像的复杂神经网络(如生成网络),也在本书中有所涵盖。
学完本书后,读者可以使用PyTorch轻松开发深度学习应用程序。
作者简介
目录信息
1.1 人工智能 1
1.2 机器学习 3
1.3 深度学习 4
1.3.1 深度学习的应用 4
1.3.2 深度学习的浮夸宣传 6
1.3.3 深度学习发展史 6
1.3.4 为何是现在 7
1.3.5 硬件可用性 7
1.3.6 数据和算法 8
1.3.7 深度学习框架 9
1.4 小结 10
第 2章 神经网络的构成 11
2.1 安装PyTorch 11
2.2 实现第 一个神经网络 12
2.2.1 准备数据 13
2.2.2 为神经网络创建数据 20
2.2.3 加载数据 24
2.3 小结 25
第3章 深入了解神经网络 26
3.1 详解神经网络的组成部分 26
3.1.1 层—神经网络的基本组成 27
3.1.2 非线性激活函数 29
3.1.3 PyTorch中的非线性激活函数 32
3.1.4 使用深度学习进行图像分类 36
3.2 小结 46
第4章 机器学习基础 47
4.1 三类机器学习问题 47
4.1.1 有监督学习 48
4.1.2 无监督学习 48
4.1.3 强化学习 48
4.2 机器学习术语 49
4.3 评估机器学习模型 50
4.4 数据预处理与特征工程 54
4.4.1 向量化 54
4.4.2 值归一化 54
4.4.3 处理缺失值 55
4.4.4 特征工程 55
4.5 过拟合与欠拟合 56
4.5.1 获取更多数据 56
4.5.2 缩小网络规模 57
4.5.3 应用权重正则化 58
4.5.4 应用dropout 58
4.5.5 欠拟合 60
4.6 机器学习项目的工作流 60
4.6.1 问题定义与数据集创建 60
4.6.2 成功的衡量标准 61
4.6.3 评估协议 61
4.6.4 准备数据 62
4.6.5 模型基线 62
4.6.6 大到过拟合的模型 63
4.6.7 应用正则化 63
4.6.8 学习率选择策略 64
4.7 小结 65
第5章 深度学习之计算机视觉 66
5.1 神经网络简介 66
5.2 从零开始构建CNN模型 69
5.2.1 Conv2d 71
5.2.2 池化 74
5.2.3 非线性激活—ReLU 75
5.2.4 视图 76
5.2.5 训练模型 77
5.2.6 狗猫分类问题—从零开始构建CNN 80
5.2.7 利用迁移学习对狗猫分类 82
5.3 创建和探索VGG16模型 84
5.3.1 冻结层 85
5.3.2 微调VGG16模型 85
5.3.3 训练VGG16模型 86
5.4 计算预卷积特征 88
5.5 理解CNN模型如何学习 91
5.6 CNN层的可视化权重 94
5.7 小结 95
第6章 序列数据和文本的深度学习 96
6.1 使用文本数据 96
6.1.1 分词 98
6.1.2 向量化 100
6.2 通过构建情感分类器训练词向量 104
6.2.1 下载IMDB数据并对文本分词 104
6.2.2 构建词表 106
6.2.3 生成向量的批数据 107
6.2.4 使用词向量创建网络模型 108
6.2.5 训练模型 109
6.3 使用预训练的词向量 110
6.3.1 下载词向量 111
6.3.2 在模型中加载词向量 112
6.3.3 冻结embedding层权重 113
6.4 递归神经网络(RNN) 113
6.5 LSTM 117
6.5.1 长期依赖 117
6.5.2 LSTM网络 117
6.6 基于序列数据的卷积网络 123
6.7 小结 125
第7章 生成网络 126
7.1 神经风格迁移 126
7.1.1 加载数据 129
7.1.2 创建VGG模型 130
7.1.3 内容损失 131
7.1.4 风格损失 131
7.1.5 提取损失 133
7.1.6 为网络层创建损失函数 136
7.1.7 创建优化器 136
7.1.8 训练 137
7.2 生成对抗网络(GAN) 138
7.3 深度卷机生成对抗网络 139
7.3.1 定义生成网络 140
7.3.2 定义判别网络 144
7.3.3 定义损失函数和优化器 145
7.3.4 训练判别网络 145
7.3.5 训练生成网络 146
7.3.6 训练整个网络 147
7.3.7 检验生成的图片 148
7.4 语言建模 150
7.4.1 准备数据 151
7.4.2 生成批数据 152
7.4.3 定义基于LSTM的模型 153
7.4.4 定义训练和评估函数 155
7.4.5 训练模型 157
7.5 小结 159
第8章 现代网络架构 160
8.1 现代网络架构 160
8.1.1 ResNet 160
8.1.2 Inception 168
8.2 稠密连接卷积网络(DenseNet) 175
8.2.1 DenseBlock 175
8.2.2 DenseLayer 176
8.3 模型集成 180
8.3.1 创建模型 181
8.3.2 提取图片特征 182
8.3.3 创建自定义数据集和数据加载器 183
8.3.4 创建集成模型 184
8.3.5 训练和验证模型 185
8.4 encoder-decoder架构 186
8.4.1 编码器 188
8.4.2 解码器 188
8.5 小结 188
第9章 未来走向 189
9.1 未来走向 189
9.2 回顾 189
9.3 有趣的创意应用 190
9.3.1 对象检测 190
9.3.2 图像分割 191
9.3.3 PyTorch中的OpenNMT 192
9.3.4 Allen NLP 192
9.3.5 fast.ai—神经网络不再神秘 192
9.3.6 Open Neural Network Exchange 192
9.4 如何跟上前沿 193
9.5 小结 193
· · · · · · (收起)
读后感
用户评价
坦率地说,这本书的数学基础部分处理得非常克制,这一点我给它打高分。很多深度学习书籍为了凸显自己的“硬核”,会把读者直接丢进矩阵微积分的海洋里,结果学习曲线陡峭到令人绝望。这本书则采取了“够用就好,需要时再深挖”的策略。它在介绍损失函数时,只是简要回顾了最小二乘法的思想,然后迅速转向PyTorch中的具体实现和梯度计算的直观感受。它并没有强迫读者去推导复杂的拉格朗日乘数法,而是侧重于解释为什么选择某个损失函数(比如交叉熵)在信息论上更优。这种务实的态度,使得非数学背景的读者能够快速上手构建模型。更难能可贵的是,它在讨论Transformer模型时,没有过多纠结于Self-Attention的矩阵乘法细节,而是将重点放在了“多头注意力”如何模拟不同层面的特征关联,以及“位置编码”的必要性上。它更像是一本“工程应用指南”,而不是一本纯粹的“理论证明手册”,这对于想快速将AI技术应用于实际业务的工程师来说,是效率最高的路径。
这本书的排版和设计理念,简直是为长时间阅读量身定制的。我是一个容易被屏幕花哨元素分散注意力的人,但这本书的整体风格极其沉稳、内敛。它没有使用大面积的彩色高亮或者花哨的背景色,而是通过精妙的字体、行距和留白,引导读者的视线自然地沿着逻辑脉络前行。章节之间的过渡极其平滑,你会发现一个概念的结束点,恰好是下一个更深入概念的引入点,仿佛作者早已预知了读者在哪个知识点会产生疑问。最让我惊喜的是,它在每一章的末尾都设置了一个“陷阱自查”环节,不是传统的习题,而是抛出几个在实际编码中极易犯错的边界条件,要求读者手动检查代码,这比那些让你写代码的练习题更有助于巩固对底层逻辑的理解。例如,它会让你思考,当Batch Size趋近于1时,Batch Normalization层会发生什么,这需要你真正理解该层的工作原理,而不是简单地调用API。这种“以防万一”的设计哲学贯穿始终,让这本书读起来丝毫不累,反而有一种被高手耐心陪伴的感觉。
读完这套书,我最大的感受是,作者明显是个实战派,而不是一个纯粹的理论研究者。这本书的案例选择非常贴近工业界的真实需求,没有那种为了展示而展示的“Hello World”级别的小玩意儿。它花了大量的篇幅来讲解如何处理真实世界中遇到的脏数据——比如缺失值填充策略、数据不平衡问题的采样技术(SMOTE的PyTorch实现)——这些才是项目落地时最让人头疼的地方。特别是在模型部署这一环,它给出了一个非常实用的章节,详细演示了如何使用ONNX导出模型,以及如何在移动端进行轻量化部署的思路。我之前尝试用其他教程部署模型时总是在环境配置上卡壳,而这本书的步骤描述得极为详尽,甚至连Python虚拟环境的创建和依赖包的版本冲突处理都给出了建议。此外,它对模型评估指标的讲解也跳出了Accuracy这个单一维度,深入探讨了Precision、Recall、F1 Score在不同业务场景下的取舍,甚至还引入了贝叶斯优化来调参,展现了极高的技术深度和广度。这种从“能跑”到“能用、好用”的跨越,是这本书最让我欣赏的地方。
这本书的叙述方式简直像在给一个完全不懂编程的读者讲故事,每一个技术概念都掰开了揉碎了讲,生怕你跟不上。比如说,它讲到卷积神经网络(CNN)的时候,不是直接丢一堆数学公式,而是用了一个非常形象的比喻,把特征提取的过程比作侦探在案发现场寻找线索,层层递进,直到最终锁定目标。我个人觉得,对于那些传统教材里动辄跳过基础、直奔主题的写作风格感到头疼的人来说,这本书简直是救星。它在介绍张量(Tensor)操作时,甚至用了好几页篇幅来解释内存布局和CPU/GPU之间的交互效率,这些细节在很多号称“速成”的书里是完全被略过的。我记得最清楚的是,它对梯度下降的解释,不是简单地画个碗状图,而是引入了一个“登山者迷路”的场景,细腻地描绘了学习率过大和过小时可能产生的后果,这让我在第一次接触反向传播时,那种晦涩感瞬间烟消云散。这本书的图文并茂做得也相当到位,每一个算法流程图都非常清晰,不像有些书里印的图像是从旧报纸上剪下来的,模糊不清。它对PyTorch框架本身的使用也处理得非常人性化,比如专门开辟了一个小节,详细对比了`torch.nn.Module`和普通Python类在构建模型时的细微差别,这对于想深入理解框架底层逻辑的读者来说,是极有价值的补充。
从作者的文字中,我能感受到一种对“最佳实践”的执着追求。这本书不仅仅是教你如何写出能运行的代码,更重要的是教你如何写出“正确”且“可维护”的代码。它在讲解模型训练循环时,花费了不少篇幅来讨论如何有效地使用`torch.no_grad()`上下文管理器,以及在多GPU训练中如何正确地使用`DistributedDataParallel`,并对常见的同步和异步问题进行了深入的剖析。与市面上许多只关注模型结构的书籍不同,这本书对训练过程中的“工程化”细节投入了巨大的精力。比如,它详细说明了如何利用TensorBoard进行可视化,并提供了一套标准化的日志记录模板,帮助你追踪上百次实验的结果。我特别喜欢它对随机种子(Seed)管理的讲解,清晰地阐述了为什么在实验中固定随机种子是科学复现的基础,并给出了一个全局设置的脚本片段。这种对细节的关注,体现了作者深厚的项目经验,这本书与其说是一本教材,不如说是一份来自资深工程师的“操作手册”,指导读者避开那些只有踩过无数坑后才能领悟的弯路。
内容和结构不如免费的官方文档,还有翻译,错别字等诸多问题,不推荐
bert一出,pytorch立马就跟上了。底层的东西和tf差不多,个人更喜欢用些。
这书排版真是醉了,第十三页(全书第一个代码块)都有排版失误,而且异步社区官方不能发勘误?
这书排版真是醉了,第十三页(全书第一个代码块)都有排版失误,而且异步社区官方不能发勘误?
性价比极其低的tutorial. 有很多错别字。英文版也很垃圾,复制粘贴。