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

liftword4个月前 (01-24)技术文章26

人工智能研究所在头条上的第一篇文章介绍的是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中,张量是一个重要的概念,我们后期将会分享类似的张量处理。

相关文章

Python:被忽视的核心功能(python核心理念)

【编者按】这篇文章主要介绍了一些在 Python 编程中可能被忽视的核心功能,包括默认参数、海象运算符、*args 和 **kwargs 的使用、变量交换、str 与 repr 的区别、可迭代对象的扩...

Python并发编程:三个核心概念及Python并发编程模型

前言在正式进入Python并发编程的相关类库、语法的介绍之前,还是继续来对并发编程中的几个核心概念做进一步的阐述说明,从而在理念上对后续的学习有一个全局性的指导。同时,简单介绍一下Python中的并发...

await 协议,一个能实现高效异步编程的世界最牛的Python知识点

点击蓝字 关注我们《await 协议,一个能实现高效异步编程的世界最牛的Python知识点》1.引言你是否曾为 Python 异步编程的复杂性而苦恼?回调地狱、繁琐的语法……是不是让你望而却步?今天,...

Day 7: 异步编程——让你的 Python 高效无阻

当面对大量 I/O 密集型任务时,传统的同步编程可能会因等待外部资源(如网络请求、文件读取等)而导致性能瓶颈。而异步编程的出现,让我们可以一边等待外部资源一边继续处理其他任务,极大地提升了效率。今天的...

超实用!!!Python并发编程精髓(python3并发)

#小伙伴们,大家好!今天猿梦家要带大家探索的是Python并发编程的精髓。 在编写程序时,我们经常会遇到需要同时处理多个任务的情况,这时候并发编程就派上用场了。 通过并发编程,我们可以提高程序的运行效...

轻松掌握!Python 基本语法与核心数据类型全解析

Python 基本语法和数据类型1. 基本语法注释:单行注释使用 #,多行注释使用 ''' 或 """。python# 这是一个单行注释'...