
通过将模型应用到例证,深度学习允许我们执行很多复杂任务,如机器翻译、玩战略游戏以及在杂乱无章的场景中识别物体等。为了在实践中做到这一点,我们需要灵活且高效的工具,以便能够适用于这些复杂任务,能够在合理的时间内对大量数据进行训练。我们需要已被训练过的模型在输入变量变化的情况下正确执行。接下来看看我们决定使用PyTorch的一些原因。
PyTorch很容易被推广,因为它很简单。许多研究人员和实践者发现它易于学习、使用、扩展和调试。它是Python化的,虽然和任何复杂领域一样,它有注意事项和最佳实践示例,但对于以前使用过Python的开发人员来说,使用该库和使用其他Python库一样。
更具体地说,在PyTorch中编写深度学习机是很自然的事情。PyTorch为我们提供了一种数据类型,即张量,通常用来存储数字、向量、矩阵和数组。此外,PyTorch还提供了操作它们的函数,我们可以使用这些函数来增量编程。如果我们愿意,还可以进行交互式编程,就像平常使用Python一样。如果你知道NumPy,那么你对交互式编程应是非常熟悉的。
PyTorch具备2个特性,使得它与深度学习关联紧密。首先,它使用GPU加速计算,通常比在CPU上执行相同的计算速度快50倍。其次,PyTorch提供了支持通用数学表达式数值优化的工具,该工具用于训练深度学习模型。请注意,这2个特性适用于一般的科学计算,而不只适用于深度学习。事实上,我们完全可以将PyTorch描述为一个在Python中为科学计算提供优化支持的高性能库。
PyTorch设计的驱动因素之一是表现力,它允许开发人员实现复杂的模型,而不会被PyTorch库强加过高的复杂性(PyTorch不是一个框架)。PyTorch可以说是最无缝地将深度学习领域的思想转化为Python代码的软件之一。因此,PyTorch在研究中得到广泛的采用,国际会议上的高引用次数就证明了这一点[3]。
PyTorch从研发到成为产品的过程是一件值得关注的事情。虽然PyTorch最初专注于研究工作流,但它已经配备了高性能的C++运行环境,用于部署模型进行推理而不依赖Python,并且还可用于设计和训练C++模型。它还提供了与其他语言的绑定,以及用于部署到移动设备的接口。这些特性允许我们利用PyTorch的灵活性,还允许我们的程序在难以获得完整的Python运行环境或可能需要极大的开销的情况下运行。
当然,易用性和高性能是很容易做到的,我们希望当你深入阅读本书的时候,会认同这句话。
虽然所有的类比都有瑕疵,但2017年1月PyTorch 0.1的发布标志着深度学习库、包装器和数据交换格式从“寒武纪”爆炸式增长过渡到一个整合和统一的时代。
PyTorch第1个测试版本发布时情况如下。
在接下来大约2年的时间里,情况发生了巨大的变化。除了一些特定领域的库,随着其他深度学习库使用量的减少,PyTorch和TensorFlow社区的地位得到了巩固。变化情况可以总结为以下几点。
TensorFlow拥有强大的生产线、广泛的行业社区以及巨大的市场份额。由于使用方便,PyTorch在研究和教学领域取得了巨大进展,并且随着研究人员和毕业的学生进入该行业,PyTorch的势头越来越好。它还在生产解决方案方面积累了经验。有趣的是,随着TorchScript和急切模式的出现,PyTorch和TensorFlow的特征集开始趋同,尽管在这些特征的呈现和整体体验上仍然存在很大的差异。
人工智能/机器学习/深度学习领域从来就不是一个零门槛的领域,虽然当前有各种现成的框架、第三方工具可以使用,但是想要在该领域取得一定成就,必须要具备一些相关的编程经验(首推Python),能否熟悉其他一些框架的使用则更是加分项了。当然,本书的好处是实操性比较强,步骤也比较丰富。只要大家按照图书组织结构,从头到尾阅读,相信还是能够掌握PyTorch在深度学习中的使用方法的。
首先推荐这本PyTorch官方出品的《PyTorch深度学习实战》(Deep Learning With PyTorch)
1.PyTorch核心开发者教你使用 PyTorch 创建神经网络和深度学习系统的使用指南。
2.详细讲解整个深度学习管道的关键实践,包括 PyTorch张量API、用 Python 加载数据、监控训练以及对结果进行可视化。
3. PyTorch核心知识+真实、完整的案例项目,快速提升读者动手能力:
a.全面掌握PyTorch 相关的API 的使用方法以及系统掌握深度学习的理论和方法;
b.快速从零开始构建一个真实示例:肿瘤图像分类器;
c.轻松学会使用PyTorch 实现各种神经网络模型来解决具体的深度学习问题;
d.章尾附有“练习题”,巩固提升所学知识;更有配套的代码文件可下载并动手实现。
4. PyTorch 联合创作者Soumith Chintala作序推荐!
5. 书中所有代码都是基于Python 3.6及以上的版本编写的,提供源代码下载。
本书适用于那些已成为或打算成为深度学习实践者以及想了解PyTorch的开发人员。我们假设本书的读者是一些计算机科学家、数据科学家、软件工程师、大学生或以后会学习相关课程的学生。由于我们并不要求读者有深度学习的先验知识,因此本书前半部分的某些内容可能对有经验的实践者来说是一些已经了解的概念。对这些读者来说,我们希望本书能够提供一个与已知主题稍有不同的视角。
我们希望读者具备命令式编程和面向对象编程的基本知识。由于本书使用的编程语言是Python,因此大家需要熟悉Python的语法和操作环境,了解如何在所选择的平台上安装Python包和运行脚本。熟悉C++、Java、JavaScript、Ruby或其他类似语言的读者应该可以轻松上手,但是需要在本书之外做一些补充。同样,如果读者熟悉NumPy也很有用,但这并不是强制要求的。我们也希望读者熟悉线性代数的一些基础知识,如知道什么是矩阵、向量和点积。
接下来推荐《PyTorch深度学习》
本书在不深入数学细节的条件下,给出了多个先进深度学习架构的直观解释,如ResNet、DenseNet、Inception和Seq2Seq等,也讲解了如何进行迁移学习,如何使用预计算特征加速迁移学习,以及如何使用词向量、预训练的词向量、LSTM和一维卷积进行文本分类。
阅读完本书后,读者将会成为一个熟练的深度学习人才,能够利用学习到的不同技术解决业务问题。
本书除第1章与第9章之外,其他章节在GitHub库中都有对应的Jupyter Notebook,为了节省空间,可能未包含运行所需的导入语句。读者应该可以从该Notebook中运行所有代码。
本书注重实际演示,请在阅读本书时运行Jupeter Notebook。
使用带有GPU的计算机有助于代码运行得更快。有些公司如paperspace和crestle抽象出了运行深度学习算法所需的大量复杂度。
