PyTorch是一个深度学习框架和科学计算软件包。 无论如何,PyTorch核心团队就是这样描述PyTorch的。 PyTorch的科学计算方面主要是PyTorch的张量库和相关的张量操作的结果。
张量是n维数组。
例如,从NumPy ndarray对象创建的PyTorch torch.Tensor对象共享内存。 从性能的角度来看,这使得PyTorch和NumPy之间的转换非常便宜。借助PyTorch张量,内置了GPU支持。 如果我们的系统上安装了张量,PyTorch可以很容易地在GPU之间来回移动张量。
PyTorch张量操作可以在GPU上执行。
在CUDA上,我们将详细讨论GPU及其在深度学习中的用途。 现在,只知道PyTorch张量及其关联的操作与NumPy n维数组非常相似。张量对于深度学习和神经网络非常重要,因为它们是我们最终用于构建和训练神经网络的数据结构。除了张量库之外,PyTorch在构建和训练神经网络方面还提供了更多功能。 在介绍PyTorch的深度学习细节之前,让我们先看一下有关如何创建PyTorch的一些细节。
PyTorch的最初版本是在2016年10月,在创建PyTorch之前,曾经并且仍然存在另一个称为Torch的框架。 Torch是一个基于Lua编程语言的机器学习框架,已经存在了很长时间。
之所以存在PyTorch与该Lua版本(称为Torch)之间的联系,是因为维护Lua版本的许多开发人员都是创建PyTorch的个人。Soumith Chintala以引导PyTorch项目而闻名,他创建PyTorch的理由非常简单,Torch的Lua版本已经老化,因此需要使用Python编写的较新版本。 结果,PyTorch成为了。
您可能会听说有关PyTorch的一件事是它是由Facebook创建并维护的。 这是因为Soumith Chintala在创建PyTorch时曾在Facebook AI Research工作(在撰写本文时仍然如此)。 但是,还有许多其他公司对PyTorch有既得利益。
PyTorch GitHub仓库表明有很多贡献者,目前超过700位。 在commit贡献的顶部附近,我们有Soumith,但还有许多其他人。现在让我们看一下PyTorch的深度学习功能。
该表为我们提供了PyTorch软件包及其相应说明的列表。 这些是我们在本系列中构建神经网络时将学习和使用的主要PyTorch组件。
包装 | 说明 |
---|---|
torch | 顶级PyTorch包和张量库。 |
torch.nn | 一个子包,其中包含用于构建神经网络的模块和可扩展类。 |
torch.autograd | 一个子包,支持PyTorch中的所有可区分的Tensor操作。 |
torch.nn.functional | 一个功能接口,其中包含用于构建神经网络的典型操作,例如损失函数,激活函数和卷积操作。 |
torch.optim | 一个子包,其中包含SGD和Adam之类的标准优化操作。 |
torch.utils | 一个子包,其中包含实用程序类,例如数据集和数据加载器,这些类使数据预处理更加容易。 |
torchvision | 一个软件包,提供对流行的数据集,模型体系结构和计算机视觉图像转换的访问。 |
目前,torchvision软件包与顶级Torch软件包是分开的。 但是,如果将来将Torchvision作为Torch的子包引入,则这种情况可能会改变。
让我们谈谈学习PyTorch的前景。 对于深度学习和神经网络的初学者来说,学习PyTorch的首要原因是它是一个精简的框架,不会让您感到困惑。
PyTorch is thin and stays out of the way!
当我们使用PyTorch构建神经网络时,我们非常接近从头开始编程神经网络。 在PyTorch中进行编程的经验与实际情况差不多。
PyTorch接近真实事物!
了解了使用PyTorch对神经网络进行编程的过程之后,可以很容易地看到该过程如何在纯Python中从头开始。 这就是为什么PyTorch非常适合初学者的原因。
使用PyTorch之后,您将对神经网络和深度学习有更深入的了解。 PyTorch的顶级哲学之一就是不要介入,这使得我们可以专注于神经网络,而不再关注实际框架。
在撰写本文时,PyTorch的开发受到以下列表的指导:
PyTorch的设计新颖,Pythonic且易懂。 源代码对于Python开发人员来说很容易阅读,因为它主要是用Python编写的,并且仅落入C ++和CUDA代码中以解决性能瓶颈。
总体而言,PyTorch是加深我们对深度学习和神经网络的理解的绝佳工具。
从知识投资的角度来看,PyTorch可以被视为更安全的选择,仅因为Facebook支持它,并且PyTorch是为Python构建的,而Lua与Lua不同,它拥有庞大且不断发展的深度学习社区。
除了Facebook和Python优势之外,PyTorch还非常瘦,并且与Python高度集成,并且非常瘦,这使得PyTorch更有可能随着事情的发展而适应迅速发展的深度学习环境。
这些特性提高了PyTorch作为深度学习框架的寿命。
PyTorch经常弹出的一个共同特征是,它非常适合研究。 研究适合性的原因与技术设计考虑有关。 为了优化神经网络,我们需要计算导数,并且为了进行计算,深度学习框架使用所谓的计算图。
计算图用于绘制神经网络内部张量上发生的函数运算。
这些图然后用于计算优化神经网络所需的导数。 PyTorch使用称为动态计算图的计算图。 这意味着在创建操作时将动态生成图形。
这与在实际操作发生之前完全确定的静态图相反。
我们将在本系列中使用PyTorch解决的第一个项目是建立一个卷积神经网络,以对Fashion-MNIST数据集中的图像进行分类。
该数据集包含来自十个不同类别的服装项目的六万个示例训练集。 我们将使用PyTorch构建卷积神经网络,该神经网络可以准确预测给定输入零件的正确服装,因此请继续关注!
让我们为深入学习和神经网络做好准备。 在下一篇文章中,我们将安装PyTorch。 我会在那里见你!