pytorch——人工智能的开源深度学习框架
tensorflow
人工智能研究所在头条上的第一篇文章介绍的是tensorflow,tensorflow是Google旗下的开源深度学习框架,我们在往期的分享中,也介绍了其相关方面的文章,从安装到基础的CNN卷积神经网络到数字识别与图片分类等等,随着科技的发展,其深度学习框架也越来越成熟,facebook旗下的pytorch便是在众多框架中脱颖而出的一个优秀的深度学习框架。
pytorch
什么是PyTorch?PyTorch是一个基于Python的开源深度学习库,它有助于构建深度学习模型并在各种应用程序中使用它们。但这不仅仅是另一个深度学习库。这是一个科学计算包,专门用于张量计算、自动微分和GPU加速。由于这些原因,PyTorch是最受欢迎的深度学习库之一,与Keras和TensorFlow等开源深度学习库竞争,让大家津津乐道的是谁是最好的开源深度学习库。PyTorch的前身是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口。它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络。
PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。除了Facebook外,它已经被Twitter、CMU和Salesforce等机构采用
PyTorch由于其Pythonic性质和易于扩展性(即实现自定义层类型、网络架构等),在研究社区中特别受欢迎。PyTorch使用Tensor作为其核心数据结构,类似于Numpy数组。有了适当的软件和硬件,张量可以加速各种数学运算。在深度学习中大量执行这些操作时,速度会产生巨大的差异。PyTorch与Python类似,侧重于易用性,即使具有非常基础的编程知识的用户也可以在其项目中使用深度学习
为什么要学习深受学习pytorchPyTorch是基于Lua的科学计算框架Torch。在PyTorch和Keras/TensorFlow之前,Caffe和Torch等深度学习包是最受欢迎的。然而,随着深度学习开始彻底改变计算机科学的几乎所有领域,开发人员和研究人员需要一个高效、易于使用的库来构建、训练和评估。Python和R是数据科学家和机器学习最流行的两种编程语言,因此研究人员希望在其Python生态系统中使用深度学习算法是很自然的。
PyTorch解决了研究人员在使用Keras和TensorFlow时遇到的许多问题。虽然Keras非常易于使用,另一方面,TensorFlow也可以处理类似的事前,但它们不是Pythonic,而且通常很难梳理,PyTorch通过创建一个Pythonic且易于定制的API解决了这些问题,允许实现新的层类型、优化器和新颖的架构。但是随着 PyTorch1.x和TensorFlow2.x 发布以来,各个库的API基本上已经融合。 PyTorch和TensorFlow现在实现了基本相同的功能,并提供API和函数调用来完成相同的事情,这里不要纠结说那个是最好的深度学习开源框架。
PyTorch在上述所有这些指标上的表现都非常出色。“ pythonic ”编码风格使其易于学习和使用。GPU加速,支持分布式计算和自动梯度计算有助于从前向表达式开始自动执行后向传递。
当然,由于Python,它面临着运行缓慢的风险,但高性能C++API (libtorch)消除了这种速度的差异。
专栏
人工智能之人脸检测与人脸识别
作者:人工智能研究所
79.9币
3人已购
查看
PyTorch库概述现在我们已经了解了PyTorch以及它的独特之处,让我们来看看PyTorch项目的基本管道信息。下图描述了一个典型的工作流程以及与每个步骤相关的重要模块。
基本PyTorch工作流程
PyTorch库深度学习流程1.数据加载和处理
任何深度学习项目的第一步都是处理数据加载和处理。PyTorch通过torch.utils.data提供相同的实用程序。该模块中的两个重要类是Dataset和DataLoader。如果我们可以访问多台机器或GPU,我们也可以使用torch.nn.DataParallel和torch.distributed。
2.构建神经网络
torch.nn模块用于创建神经网络。它提供了所有常见的神经网络层,如全连接层、卷积层、激活和损失函数等。一旦创建了网络架构并且准备好将数据馈送到网络,我们就需要更新权重和偏差的,以便网络开始学习。这些实用程序在torch.optim模块中提供。类似地,对于反向传递期间所需的自动微分,我们使用torch.autograd模块。
说到自动微分,PyTorch让训练神经网络变得非常容易,PyTorch能够:
组装神经网络图执行前向传递(即进行预测)计算损失/错误向后遍历网络(即反向传播)并调整网络参数,基于计算的损失/输出做出更准确的预测第4步始终是手动实施的最乏味和最耗时的步骤。幸运的是,PyTorch会自动处理这一步。
3.模型推断和兼容性
模型经过训练后,可用于预测测试,甚至测试新数据集的输出。这个过程被称为模型推理。
PyTorch还提供TorchScript,可用于独立于Python运行时运行模型。这可以被认为是一个虚拟机,其指令主要针对张量。还可以将使用PyTorch训练的模型转换为ONNX等格式,这样就可以在其他DL框架(例如MXNet、CNTK、Caffe2)中使用这些模型。还可以将onnx模型转换为Tensorflow。
PyTorch和张量PyTorch将多维数组表示为“张量”。张量构成了神经网络的基本构建块
PyTorch将数据表示为称为张量的多维、类似NumPy的数组。张量存储神经网络的输入、隐藏层表示和输出。张量只是矩阵的一个奇特名称。如果您熟悉NumPy数组,那么理解和使用PyTorch张量将非常容易。标量值由0维张量表示。类似地,列/行矩阵使用一维张量等表示,在pytorch中,张量是一个重要的概念,我们后期将会分享类似的张量处理。
我整理了一份关于pytorch、python基础,图像处理opencv自然语言处理、机器学习、数学基础等资源库,想学习人工智能或者转行到高薪资行业的,大学生都非常实用,无任何套路免费提供,,加我Q群【856833272 】也可以领取的内部资源,人工智能题库,大厂面试题学习大纲自学课程大纲还有200G人工智能资料大礼包免费送哦~扫码加V免费领取资料.