《Deep Learning With PyTorch》,一本深受广大深度学习爱好者喜欢的书。这本书由PyTorch官方出品,中文版已经出版啦!
中文名:PyTorch深度学习实战
本书作者Eli Stevens职业生涯的大部分时间都在美国硅谷的初创公司工作,从软件工程师(网络设备制造业)到首席技术官(开发肿瘤放疗软件)。在本书出版时,他正在汽车自动驾驶行业从事机器学习相关工作。
Luca Antiga:21世纪初,Luca Antiga担任生物医学工程研究员。2010年到2020年间,他是一家人工智能工程公司的联合创始人和首席技术官。他参与了多个开源项目,包括PyTorch的核心模块。最近,他作为联合创始人创建了一家总部位于美国的初创公司,专注于数据定义软件的基础设施。
Thomas Viehmann是一名德国慕尼黑的机器学习和PyTorch的专业培训师和顾问,也是PyTorch核心开发人员。拥有数学博士学位的他不畏惧理论,擅长将理论应用于实际的计算挑战。
本书指导读者使用Python和PyTorch实现深度学习算法。本书首先介绍PyTorch的核心知识,然后带领读者体验一个真实的案例研究项目:构建能够使用CT扫描检测恶性肺肿瘤的算法。你将学习用有限的输入训练网络,并处理数据,以获得一些结果。你将筛选出不可靠的初始结果,并专注于诊断和修复神经网络中的问题。最后,你将研究通过增强数据训练、改进模型体系结构和执行其他微调来改进结果的方法。通过这个真实的案例,你会发现PyTorch是多么有效和有趣,并掌握在生产中部署PyTorch模型的技能。
本书适合具有一定Python知识和基础线性代数知识的开发人员。了解深度学习的基础知识对阅读本书有一定的帮助,但读者无须具有使用PyTorch或其他深度学习框架的经验。
本书都有哪些内容?
本书由3个部分组成。第1部分介绍基础知识;第2部分在第1部分的基础上介绍一个端到端的项目,并增加更高级的概念;简短的第3部分以PyTorch部署之旅结束本书。大家可能会注意到各部分的写作风格和图片风格不同。尽管本书是无数小时的协同计划、讨论和编辑的结果,但写作和绘图的工作被分成了几部分。Luca主要负责第1部分,Eli主要负责第2部分[1],Thomas主要负责第3部分(他试图在第3部分将第1部分和第2部分的写作风格结合起来)。我们决定保留这些部分的原始风格,而不是一味寻找各部分风格的共同点。以下是各部分所包括的章及其概述。
第1部分
在第1部分中,我们在PyTorch的使用上迈出第一步,了解PyTorch项目并开始掌握构建自己的项目所需要的基本技能。我们将介绍PyTorch API和一些PyTorch库背后的特性,并训练一个初始的分类模型。在第1部分结束时,我们将准备处理一个真实的项目。
第1章介绍PyTorch用于深度学习的库及其在“深度学习革命”中的地位,并探讨PyTorch与其他深度学习框架的区别。
第2章通过运行一些预先训练好的网络示例来展示PyTorch的实际应用,演示如何在PyTorch Hub中下载和运行模型。
第3章介绍PyTorch的基本构建组件——张量,介绍张量的一些API,并深入底层介绍一些实现细节。
第4章展示不同类型的数据如何被表示为张量,以及深度学习模型期望构造什么样的张量。
第5章介绍梯度下降机制,以及PyTorch如何实现自动微分。
第6章展示利用PyTorch的神经网络(nn)和优化(optim)模块来建立和训练一个用于回归的神经网络的过程。
第7章在第6章的基础上介绍构建一个用于图像分类的全连接层模型,并扩展介绍PyTorch API的知识。
第8章介绍卷积神经网络,并探讨关于构建神经网络模型及其PyTorch实现方面更高级的概念。
第2部分
在第2部分中,每一章都会让我们更接近一个全面的肺癌自动检测解决方案。我们将把这个难题作为动机来演示解决诸如肺癌筛查的大规模问题所需的实际方法。这是一个专注于数据清洗工程、故障排除和问题求解的大型项目。
第9章从CT成像开始,介绍用于肺肿瘤分类的端到端策略。
第10章介绍使用标准PyTorch API加载人工标注数据和CT扫描的图像,并将相关信息转换为张量。
第11章介绍第1个分类模型,该模型基于第10章介绍的训练数据构建。本章还会介绍对模型进行训练,收集基本的性能指标,并使用张量可视化工具TensorBoard来监控训练。
第12章探讨并介绍实现标准性能指标,以及使用这些指标来识别之前完成的训练中的缺陷。然后,介绍通过使用经过数据平衡和数据增强方法改进过的数据集来弥补这些缺陷。
第13章介绍分割,即像素到像素的模型架构,以及使用它来生成覆盖整个CT扫描的可能结节位置的热力图。这张热力图可以用来在CT扫描中找到非人工标注数据的结节。
第14章介绍实现最终的端到端项目:使用新的分割模型和分类方法对癌症患者进行诊断。
第3部分
第3部分为第15章,主要介绍部署相关内容,概述如何将PyTorch模型部署到简单的Web服务中,或将它们嵌入C++程序中,抑或将它们发布到移动电话上。
适用哪些读者群?
本书适用于那些已成为或打算成为深度学习实践者以及想了解PyTorch的开发人员。我们假设本书的读者是一些计算机科学家、数据科学家、软件工程师、大学生或以后会学习相关课程的学生。由于我们并不要求读者有深度学习的先验知识,因此本书前半部分的某些内容可能对有经验的实践者来说是一些已经了解的概念。对这些读者来说,我们希望本书能够提供一个与已知主题稍有不同的视角。
我们希望读者具备命令式编程和面向对象编程的基本知识。由于本书使用的编程语言是Python,因此大家需要熟悉Python的语法和操作环境,了解如何在所选择的平台上安装Python包和运行脚本。熟悉C++、Java、JavaScript、Ruby或其他类似语言的读者应该可以轻松上手,但是需要在本书之外做一些补充。同样,如果读者熟悉NumPy也很有用,但这并不是强制要求的。我们也希望读者熟悉线性代数的一些基础知识,如知道什么是矩阵、向量和点积。
关于代码
本书中所有的代码都是基于Python 3.6及以上的版本编写的。本书中的代码可以从异步社区中获取。编写本书时,Python的最新版本是3.6.8,本书正是使用该版本来测试书中的例子的。