PyTorch是一个基于Python语言的深度学习框架,它将数据封装成张量(Tensor)来进行处理。
PyTorch提供了灵活且高效的工具,用于构建、训练和部署机器学习和深度学习模型。
张量
PyTorch中的张量就是元素为同一种数据类型的多维矩阵。在PyTorch中,张量以 "类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中。 PyTorch张量与NumPy数组类似,但PyTorch的张量具有GPU加速的能力(通过CUDA),这使得深度学习模型能够高效地在GPU上运行。 PyTorch提供了对张量的强大支持,可以进行高效的数值计算、矩阵操作、自动求导等。 张量是 PyTorch 中的核心数据抽象,PyTorch 支持各种张量子类型。通常地,一维张量称为向量/矢量(vector),二维张量称为矩阵(matrix)。
在pytorch中进行模型构建的整个流程一般分为四个步骤:
- 准备训练集数据
- 构建要使用的模型
- 设置损失函数和优化器
- 模型训练
PyTorch特点
类似于NumPy的张量计算
PyTorch中的基本数据结构是张量(Tensor),它与NumPy中的数组类似,但PyTorch的张量具有GPU加速的能力(通过CUDA(Compute Unified Device Architecture)是 NVIDIA 推出的一种并行计算平台和编程模型,它允许开发者利用 NVIDIA GPU 的强大计算能力来加速通用计算任务。),这使得深度学习模型能够高效地在GPU上运行。 自动微分系统
PyTorch提供了强大的自动微分功能(autograd模块),能够自动计算模型中每个参数的梯度。 自动微分使得梯度计算过程变得简洁和高效,并且支持复杂的模型和动态计算图。 深度学习库
PyTorch提供了一个名为torch.nn的子模块,用于构建神经网络。它包括了大量的预构建的层(如全连接层、卷积层、循环神经网络层等),损失函数(如交叉熵、均方误差等),以及优化算法(如SGD、Adam等)。 torch.nn.Module是PyTorch中构建神经网络的基础类,用户可以通过继承该类来定义自己的神经网络架构。 动态计算图
PyTorch使用动态计算图机制,允许在运行时构建和修改模型结构,具有更高的灵活性,适合于研究人员进行实验和模型调试。 GPU加速(CUDA支持)
PyTorch提供对GPU的良好支持,能够在NVIDIA的CUDA设备上高效地进行计算。用户只需要将数据和模型转移到GPU上,PyTorch会自动优化计算过程。 通过简单的tensor.to(device)方法,可以轻松地将模型和数据从CPU转移到GPU或从一个GPU转移到另一个GPU。 跨平台支持
PyTorch支持在多种硬件平台(如CPU、GPU、TPU等)上运行,并且支持不同操作系统(如Linux、Windows、macOS)以及分布式计算环境(如多GPU、分布式训练)。
CUDA 的全称是 Compute Unified Device Architecture(统一计算设备架构),是 NVIDIA 推出的一种 并行计算平台和编程模型。
简单来说,它的核心作用是:让开发者能够用 NVIDIA 的 GPU 来做通用计算,而不仅仅是用来渲染图形。