pytorch——人工智能的开源深度学习框架

liftword5个月前 (01-24)技术文章36

人工智能研究所在头条上的第一篇文章介绍的是tensorflow,tensorflow是Google旗下的开源深度学习框架,我们在往期的分享中,也介绍了其相关方面的文章,从安装到基础的CNN卷积神经网络到数字识别与图片分类等等,随着科技的发展,其深度学习框架也越来越成熟,facebook旗下的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 类似,侧重于易用性,即使具有非常基础的编程知识的用户也可以在其项目中使用深度学习

为什么要学习深受学习pytorch

PyTorch是 基于 Lua 的科学计算框架 Torch。在 PyTorch 和 Keras/TensorFlow 之前,Caffe 和 Torch 等深度学习包是最受欢迎的。然而,随着深度学习开始彻底改变计算机科学的几乎所有领域,开发人员和研究人员需要一个高效、易于使用的库来构建、训练和评估。 Python 和 R 是数据科学家和机器学习最流行的两种编程语言,因此研究人员希望在其 Python 生态系统中使用深度学习算法是很自然的。

PyTorch 解决了研究人员在使用 Keras 和 TensorFlow 时遇到的许多问题。虽然 Keras 非常易于使用,另一方面,TensorFlow也可以处理类似的事前,但它们不是 Pythonic,而且通常很难梳理,PyTorch 通过创建一个 Pythonic 且易于定制的 API 解决了这些问题,允许实现新的层类型、优化器和新颖的架构。但是随着 PyTorch 1.x 和 TensorFlow 2.x 发布以来,各个库的 API 基本上已经融合 PyTorch 和 TensorFlow 现在实现了基本相同的功能,并提供 API 和函数调用来完成相同的事情,这里不要纠结说那个是最好的深度学习开源框架。

PyTorch 在上述所有这些指标上的表现都非常出色。“ pythonic ”编码风格使其易于学习和使用。GPU 加速,支持分布式计算自动梯度计算有助于从前向表达式开始自动执行后向传递。

当然,由于 Python,它面临着运行缓慢的风险,但高性能 C++ API (libtorch) 消除了这种速度的差异。

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 能够:

  1. 组装神经网络图
  2. 执行前向传递(即进行预测)
  3. 计算损失/错误
  4. 向后遍历网络(即反向传播)并调整网络参数,基于计算的损失/输出做出更准确的预测

第 4 步始终是手动实施的最乏味和最耗时的步骤。幸运的是,PyTorch 会自动处理这一步。

3. 模型推断和兼容性

模型经过训练后,可用于预测测试,甚至测试新数据集的输出。这个过程被称为模型推理。

PyTorch 还提供TorchScript,可用于独立于 Python 运行时运行模型。这可以被认为是一个虚拟机,其指令主要针对张量。还可以将使用 PyTorch 训练的模型转换为 ONNX 等格式,这样就可以在其他 DL 框架(例如 MXNet、CNTK、Caffe2)中使用这些模型。还可以将onnx模型转换为 Tensorflow。

PyTorch 和张量



PyTorch 将数据表示为称为张量的多维、类似 NumPy 的数组张量存储神经网络的输入、隐藏层表示和输出。张量只是矩阵的一个奇特名称。如果您熟悉 NumPy 数组,那么理解和使用 PyTorch 张量将非常容易。标量值由 0 维张量表示。类似地,列/行矩阵使用一维张量等表示,在pytorch中,张量是一个重要的概念,我们后期将会分享类似的张量处理。

相关文章

硬核!288页Python核心知识笔记(附思维导图,建议收藏)

不少朋友在学习Python时,都会做大量的笔记,随着学习进度的增加,笔记越来越厚,但有效内容反而越来越少。今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够...

活体脑细胞做成16核芯片,用Python就能编程

梦晨 发自 凹非寺量子位 | 公众号 QbitAI首个“脑PU”来了!由“16核”类人脑器官(human brain organoids)组成。这项研究来自瑞士生物计算创业公司FinalSpark,并...

Python四大主流网络编程框架,你知道么?

高并发处理框架—— TornadoTornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器。它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大量...

Python 小白的自学秘籍:从入门到精通

在当今数字化的时代,Python 语言的重要性日益凸显。无论是数据分析、人工智能,还是网络开发,Python 都展现出了强大的实力。对于众多小白来说,自学 Python 似乎是一座难以逾越的高山,但其...

Python类编写的进阶之路:从入门到精通的五个层次

文章摘要本文深入探讨Python类编写的五个层次,从基本类创建到继承和方法重写、抽象类和多态等高级概念,结合代码示例和实践分析,帮助读者逐步掌握Python面向对象编程的核心技能,提升代码质量和可维护...

36个经典Python案例!掌握编程精髓

Python,作为一种高效、灵活的编程语言,广泛应用于数据科学、Web开发、自动化运维以及人工智能等多个领域。它简洁的语法和强大的功能使其成为初学者和专业开发者的首选工具。本文将介绍36个常用的Pyt...