基于PyTorch的深度学习系列教程(一):认识PyTorch
前言
本文回答了以下初学者在学习PyTorch时经常会产生的两个疑问:
1. 什么是PyTorch? 它在机器学习中充当什么角色?
2. 为什么偏偏要学PyTorch? (为何不选择TensorFlow、Keras等框架?)
这也是我的第一篇博客,写的不好请见谅,下面就让我们进入正文。
一、PyTorch简介
首先,让我们搞清楚一个问题:什么是深度学习学习框架?简单来讲,深度学习框架是一套完备的系统,其中提供了一系列方法和工具,使得用户能够高效灵活地进行数据处理、建立模型和实验评估等步骤。PyTorch就是这样一套综合的系统。在之后的学习当中,我们会一一了解实现这些功能的方法和函数。
二、PyTorch的优势在哪?
上图展示了几种主流的机器学习框架,如TensorFlow、Keras等。相较于这些框架,PyTorch到底有哪些突出的优势?
1.对Python语言的良好支持
从PyTorch的名字我们不难看出,这个框架与Python紧密相连。PyTorch的前身Torch实际上是基于Lua语言研发的,但其实在是过于小众。考虑到Python在科学计算领域的突出地位,和它非常完善的生态支持,Torch原团队便基于Python语言进行了重构,加入了对Python的接口以及自动求导模块。
PyTorch的学习中引入的新概念非常少,降低了用户的理解门槛,也使得代码几乎和原生Python一致。更重要的是,PyTorch能够无缝地使用Numpy库,大大优化了使用体验和便捷程度。
2.基于动态图的求导
TensorFlow是一种典型的基于静态图的机器学习框架。静态图一旦建立就相对固定,不易于改变。它过于庞大,往往会占据大量的内存空间。相反,动态图是在代码运行过程当中被建立的,相对更加灵活轻便,方便了使用者修改网络结构。
总结成一句话:PyTorch是最适合新手学习深度学习的框架之一,相较于其他框架也拥有更大的灵活性。大部分读者都对Numpy比较熟悉,这也使得学习新操作的难度大大减小。如果对Numpy的掌握仍然不熟练,建议先复习梳理相关知识。后续教程在编写过程中,也会把PyTorch和Numpy两种库实现相同操作的代码进行对比,方便读者学习记忆。