什么是pytorch?

您所在的位置:网站首页 pytorch是什么意思 什么是pytorch?

什么是pytorch?

2022-06-12 19:25| 来源: 网络整理| 查看: 265

点击这里下载这篇文章的源代码

在本教程中,您将了解PyTorch深度学习库,包括:

什么是PyTorch 如何在您的机器上安装PyTorch 重要的Pytorch功能,包括张量和自动化 Pytorch如何支持GPU 为什么PyTorch在研究人员中如此受欢迎 不管PyTorch是不是更好的比Keras / TensorFlow 你是否应该在项目中使用PyTorch或Keras/TensorFlow

此外,本教程是Pytorch基础上的五个部分系列中的一部分:

什么是pytorch?(今天的教程) PyTorch入门:使用PyTorch训练你的第一个神经网络(下周的教程) 训练您的第一个卷积神经网络 PyTorch图像分类与预训练网络 PyTorch目标检测与预先训练网络

到本教程结束时,您将对Pytorch库进行很好的介绍,并能够与其他深入学习从业者讨论图书馆的优缺点。

要了解PyTorch深度学习库,继续阅读。

正在寻找这篇文章的源代码? 直接跳到下载部分 什么是pytorch?

PyTorch是一个开源的机器学习库,专门用于张量计算、自动区分和GPU加速。由于这些理由,PyTorch是其中之一最受欢迎深度学习库,与Keras和TensorFlow共同角逐“最常用”深度学习软件包奖:

图1:PyTorch在深度学习库的普及程度方面仅次于Keras/TensorFlow。

pytorch往往是特别是由于它的python特性和易于扩展(例如,实现自定义层类型、网络架构等),它在研究界很受欢迎。

在本教程中,我们将讨论PyTorch深度学习库的基础知识。从下周开始,您将获得使用PyTorch训练神经网络、执行图像分类和将目标检测应用于图像和实时视频的实践经验。

让我们开始学习Pytorch!

PyTorch、深度学习和神经网络 图2:PyTorch是一个科学计算库,主要专注于深度学习和神经网络。

PyTorch是基于面向Lua的科学计算框架Torch。在Pytorch和Keras / Tensorflow两者之前,诸如Caffe和Torch等深度学习套餐往往是最受欢迎的。

然而,随着深度学习开始彻底改变计算机科学的几乎所有领域,开发人员和研究人员想要一个高效、易于使用的库,以Python编程语言构建、训练和评估神经网络。

Python和R是数据科学家和机器学习最流行的两种编程语言,所以研究人员希望在他们的Python生态系统中使用深度学习算法是很自然的。

François Chollet是谷歌人工智能研究人员,于2015年3月开发并发布了Keras,这是一个开源库,提供了用于训练神经网络的Python API。Keras由于其易于使用的API而迅速流行起来,该API在很大程度上模拟了scikit学习的方式事实上的标准机器学习库的Python,工作。

很快,谷歌在2015年11月发布了第一个版本的TensorFlow。Tensorflow不仅成为Keras库的默认后端/引擎,而且还实现了许多较低级别的功能,为提出最先进的网络所需的深度学习从业者和研究人员进行新的研究。

但是,存在问题 - TensoRFlow v1.x API并不是很有Pythonic,也没有直观且易于使用。为了解决这个问题,PyTorch于2016年9月发布,由Facebook赞助,并得到Yann LeCun(现代神经网络复兴的始祖之一,Facebook的人工智能研究员)的支持。

PyTorch解决了研究人员在Keras和TensorFlow上遇到的许多问题。虽然Keras非常容易使用,但由于其本质和设计,Keras并不暴露研究人员需要的一些低级功能和定制。

另一方面,TensorFlow当然允许访问这些类型的函数,但它们不是python的,通常很难梳理TensorFlow文档来找到它们完全需要什么功能。简而言之,Keras没有提供研究人员所需的低级API,并且Tensorflow的API并不是那么友好。

Pytorch通过创建Pythonic和易于自定义的API来解决这些问题,允许实现新的图层类型,优化器和新颖的架构。研究小组慢慢启动拥抱Pytorch,从Tensorflow切换。从本质上讲,这就是为什么你看到今天在实验室里使用Pytorch的研究人员。

这就是说,自从PyTorch 1发布以来。x和TensorFlow 2。x,对应于各自库的api本质上有聚合(双关语)。PyTorch和TensorFlow现在都实现了本质上相同的功能,并提供api和函数调用来实现相同的功能

这一声明甚至得到了Eli Stevens, Luca Antiga和Thomas Viehmann的支持,他们在PyTorch上写了一本书:

有趣的是,随着TorchScript和渴望模式的出现,PyTorch和TensorFlow都已经看到他们的特性集开始与对方的特性集融合,尽管这两款游戏在这些功能和整体体验上仍有很大不同。

- - - - - -使用PyTorch进行深度学习(第1章第1.3.1节,第9页)

我的观点是不要太过纠结于PyTorch或Keras/TensorFlow是否“更好”的争论——两个库实现了非常相似的特性,只是使用了不同的函数调用和不同的训练范式。

不要陷入(有时是充满敌意的)哪个图书馆更好的争论特别是如果你是深入学习的初学者,则为真。正如我在本教程稍后讨论的那样,它是它的更好的让你只选择一个并学习它。无论您使用Pytorch或Keras / Tensorflow,深度学习的基础是相同的。

如何安装pytorch? 图3:PyTorch可以通过Python的包管理器“pip”安装。

PyTorch库可以使用Python的包管理器pip安装:

$ PIP安装火炬火炬视觉

从那里,您应该启动一个Python shell,并验证您可以导入两者火炬和torchvision:

$ python >>> import火炬>>>火炬。__version__ 1.8.1”> > >

祝贺您现在已经在您的机器上安装了PyTorch !

注意:安装PyTorch需要帮助吗?首先,一定要参考PyTorch的官方文档.否则,您可能会对我预先配置的Jupyter笔记本感兴趣PyImageSearch大学PyTorch已预装。

PyTorch和张量 图4:PyTorch将多维数组表示为“张量”。张量构成神经网络的基本构件(图像源码)。

PyTorch将数据表示为多维的、类似numpy的数组张量。张量存储神经网络的输入、隐含层表示和输出。

以下是用numpy初始化数组的示例:

> > >进口numpy np > > > np.array([[0.0, 1.3],[2.8, 3.3],[4.1, 5.2],[6.9, 7.0]])阵列([[0。[2.8, 3.3], [4.1, 5.2], [6.9, 7.]]])

可以使用PyTorch初始化相同的数组:

进口火炬> > > > > > torch.tensor([[0.0, 1.3],[2.8, 3.3],[4.1, 5.2],[6.9, 7.0]])张量([[0.0000,1.3000],[2.8000,3.3000],[4.1000,5.2000],[6.9000,7.0000]])

这似乎不是什么大问题,但在内部,PyTorch可以从这些张量动态生成一个图,然后在上面应用自动微分:

Pytorch的autograd功能 图5:我们可以很容易地使用PyTorch训练神经网络,感谢PyTorch的“autograd”模块(图像源码)。

说到自动区分,PyTorch让训练神经网络变得超级简单torch.autograd.

在引擎盖下,Pytorch能够:

组装神经网络的图 向前传球(即做出预测) 计算损失/错误 遍历网络向后(即反向传播),并调整网络的参数,以便(理想情况下)根据计算出的损失/输出做出更准确的预测

步骤4总是手工执行最乏味和耗时的步骤。幸运的是,PyTorch会自动处理这一步。

注意:Keras用户通常只是调用model.fit训练网络,而TensorFlow用户利用GradientTape类。PyTorch要求我们手工实现训练循环,因此torch.autograd在引擎盖下为我们工作是一个巨大的帮助。感谢PyTorch开发人员实现了自动区分,这样您就不必这样做了。

Pytorch和GPU支持 图6:PyTorch可以使用gpu(主要是基于NVIDIA cuda的gpu)来训练神经网络。

Pytorch库主要支持基于NVIDIA CUDA的GPU。GPU加速允许您在一分钟内培训神经网络。

此外,PyTorch支持分布式训练这可以让您更快地训练您的模型。

为什么PyTorch在研究人员中很受欢迎? 图7:由于其灵活性和可定制性,Pytorch往往在深入学习研究人员中非常受欢迎。

PyTorch在2016年(PyTorch发布时)和2019年(TensorFlow 2之前)之间在研究领域获得了立足点。X正式发布)。

Pytorch能够获得这个立足点的原因很多,但主要原因是:

Keras虽然非常容易使用,但不提供研究人员执行新的深度学习研究所需的低级功能 同样徒劳的是,Keras让研究人员很难实现他们自己的定制优化器、层类型和模型架构 Tensorflow 1.x.做了提供这种低级访问和自定义实现;然而,API很难使用,也不是很符合python风格 PyTorch,特别是它的autograd支持,帮助解决了TensorFlow 1的很多问题。X,使研究人员更容易实现他们自己的定制方法 此外,PyTorch还提供了深度学习的实践者完全控制在训练循环中

当然,这两者之间存在分歧。Keras使训练神经网络变得很简单,只需一次调用model.fit,就像我们在scikit-learn中训练标准机器学习模型一样。

缺点是研究人员不能(轻易)修改它model.fit呼叫,因此他们必须使用Tensorflow的较低级别功能。但这些方法并没有让他们轻松实现他们的培训例程。

pytorch解决了这个问题,这是一个问题好从某种意义上说,我们完全可以控制,但是坏因为我们可以容易地用PyTorch搬起石头砸自己的脚(每一个Pytorch用户之前忘记了它们之前的渐变)。

尽管如此,关于PyTorch和TensorFlow哪个更适合研究的争论已经开始平息。PyTorch 1。x和TensorFlow 2。x api实现了非常相似的特性,只是方式不同,有点像学习一种编程语言和另一种编程语言。每种编程语言都有其优点,但都实现了相同类型的语句和控件(例如,“if”语句、“for”循环等)。

PyTorch比TensorFlow和Keras更好吗? 图8:Pytorch和Tensorflow / Keras都不比另一个更好 - 事实上,这是一个要问的错误问题(图像源码)。

这是个错误的问题,特别是如果你是深度学习的新手。两个都不如另一个。Keras和Tensorflow有特定的用途,就像Pytorch一样。

例如,您不能笼统地说Java肯定比Python更好。当使用机器学习和数据科学时,Python比Java更有说服力。但是,如果您打算开发在多个高可靠性体系结构上运行的企业应用程序,那么Java可能是更好的选择。

不幸的是,一旦我们忠于特定的营地或团体,我们就会在我们的思想中“根深蒂固”。围绕pytorch与keras / tensorflow的壕沟有时会变得丑陋他曾敦促Keras的创建者François Chollet要求PyTorch用户停止向他发送恶意邮件:

图9:深入学习从业者有时会在他们的观点和选择的图书馆中变得过于根深蒂固,提示克拉斯的创造者的弗朗索斯·克洛特,要求Pytorch用户停止发送他仇恨邮件(原始推文)。

恶意邮件也不仅仅局限于François。我已经使用Keras和TensorFlow在我深度学习教程在PyImageSearch上,我很难过地报告,我收到了讨厌的邮件,批评我使用Keras/TensorFlow,说我愚蠢/愚蠢,告诉我关闭PyImageSearch,说我不是一个“真正的”深度学习的实践者(不管那是什么意思)。

我相信其他教育者也经历过类似的行为,不管他们是使用Keras/TensorFlow还是PyTorch编写教程。双方都很难看,它不仅限于PyTorch用户。

我的观点是,你不应该变得如此根深蒂固,以至于根据别人使用的深度学习库来攻击他们。认真,在那里是世界上更重要的问题值得你关注——你真的不需要使用你的电子邮件客户端或社交媒体平台上的回复按钮来煽动和催化更多的仇恨到我们已经脆弱的世界。

其次,如果你是深入学习的新学习,它真的无所谓你从哪一建带开始。两个PyTorch 1的api。x和TensorFlow 2。两者实现了相似的功能,只是方式不同。

你在一个库中学到的东西会转移到另一个库,就像学习一门新的编程语言一样。你学习的第一种语言往往是最难的,因为你不仅仅是在学习句法语言,还有控制结构和程序设计。

你的第二种编程语言通常更容易学习,因为那时你已经了解了控制和程序设计的基础知识。

对于深度学习图书馆来说也是如此。选一个,然后学。如果你选择有困难,抛硬币就行了真正的没关系,你的经验无论如何都会转移。

我应该使用pytorch而不是tensorflow / keras? 图10:如果你是深度学习的新手,选择PyTorch或Keras/TensorFlow。api在这一点上基本上是聚合的。

正如我在这篇文章中多次提到的,在Keras/TensorFlow和PyTorch之间进行选择并不涉及做出如下声明:

“如果你在做研究,你绝对应该使用PyTorch。” “如果你是初学者,你应该使用凯拉斯。” “如果你正在开发一个行业应用,请使用TensorFlow和Keras。”

PyTorch/Keras和TensorFlow之间的许多特性集是聚合的——它们本质上包含相同的特性集,只是以不同的方式完成。

如果你是深度学习的新手,选一个,然后学。就我个人而言,我做认为Keras是最适合教初生深度学习的实践者。我也认为Keras是快速构建和部署深度学习模型的最佳选择。

也就是说,PyTorch做使更高级的实践者更容易实现自定义训练循环、层类型和架构。这个论点在某种程度上减少了,现在TensorFlow 2。x API已经出来了,但我相信它仍然值得提及。

最重要的是,无论你使用什么深度学习库或选择学习,不要成为一个狂热分子,不要在留言板上闲逛,一般来说,不要造成问题。这个世界上已经有够多的仇恨了——作为一个科学团体,我们应该远离仇恨邮件和扯头发。

下一步是什么?我建议PyImageSearch大学. 课程信息: 25总课程•37H 19M视频•上次更新:7/2011 ★★★★★4.84(128名评分)•10,597名学生注册

我强烈相信,如果你有正确的老师,你可以主计算机视觉和深度学习。

你认为学习计算机视觉和深度学习是费时的、压倒性的、复杂的吗?或者必须涉及复杂的数学和方程?或者需要计算机科学学位?

这是不这个案子。

掌握计算机视觉和深度学习所需要的就是有人向你解释简单、直观条款。这正是我所做的.我的使命是改变教育以及如何教授复杂的人工智能主题。

如果你真的想学习计算机视觉,你的下一站应该是PyImageSearch University,最全面的计算机视觉、深度学习和OpenCV在线课程。在这里你将学习如何成功和自信地将计算机视觉应用到你的工作、研究和项目中。加入我的计算机视觉掌握。

在PyImageSearch University里面你会发现:

✓25日的课程在基本计算机愿景,深度学习和OpenCV主题 完成证书25份 ✓37小时19米按需服务的视频 ✓全新的课程发布每个月,确保你能跟上最先进的技术 ✓预配置的木星笔记本在谷歌Colab ✓在你的浏览器中运行所有代码示例-适用于Windows, macOS和Linux(不需要配置dev环境!) ✓访问集中式代码回购全部400 +教程在PyImageSearch ✓轻松一键下载用于代码,数据集,预先训练的模型等。 ✓访问移动,笔记本电脑,桌面等。

点击这里加入PyImageSearch University

总结

在本教程中,您了解了PyTorch深度学习库,包括:

什么是PyTorch 如何在您的机器上安装PyTorch PyTorch GPU的支持 为什么PyTorch在研究界很受欢迎 在项目中使用PyTorch还是Keras/TensorFlow

下周,您将通过实现和训练您的第一个神经网络来获得一些使用PyTorch的实践经验。

要下载本文的源代码(并在PyImageSearch上发布后续教程时得到通知),只需在下面的表格中输入您的电子邮件地址!

下载源代码和免费的17页资源指南

在下面输入您的电子邮件地址,以获得。zip代码和关于计算机视觉、OpenCV和深度学习的免费17页资源指南。在里面你会发现我亲手挑选的教程,书籍,课程,和图书馆,以帮助你掌握CV和DL!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3