Pytorch中张量和变量的区别
在本文中,我们将看到 Pytorch 中张量和变量之间的区别。
Pytorch 是一个开源机器学习库,用于计算机视觉、自然语言处理和深度神经网络处理。它是一个基于火炬的库。它包含一组允许数值计算、部署和优化的基本功能。 Pytorch 是使用张量类构建的。它由 Facebook AI 研究人员于 2016 年开发。Pytorch 的两个主要特点是:类似于 NumPy 但支持 GPU,自动微分用于创建和训练深度学习网络,模型可以部署在移动应用程序中,因此,使其快速且易于使用。我们必须熟悉 Pytorch 的一些模块,例如 nn(用于构建神经网络)、autograd(自动微分对张量执行的所有操作)、optim(优化神经网络权重以最小化损失)和 utils(提供数据处理类)。
张量
Pytorch 的基本单位是张量。张量是一个 n 维数组或矩阵。它包含单一数据类型的元素。它用于接受输入,也用于显示输出。张量用于深度学习模型中的强大计算。它类似于 NumPy 数组,但可以在 GPU 上运行。它们可以通过将数组初始化为零或一或随机值或从 NumPy 数组来创建。可以像在任何其他编程语言中一样访问张量的元素,也可以在可以使用切片的指定范围内访问它们。可以对张量执行许多数学运算。一个小代码,可以清楚地理解张量
Python3
import torch
x = torch.ones((3, 2))
print(x)
arr = [[3, 4]]
tensor = torch.Tensor(arr)
print(tensor)
输出:
tensor([[1., 1.],
[1., 1.],
[1., 1.]])
tensor([[3., 4.]])
在上面的代码中,我们从一个数组创建张量,我们也使用一个张量来创建一个张量。
变量
变量充当张量的包装器。它支持在张量上执行的所有操作。为了支持张量梯度的自动微分,autograd 与变量相结合。一个变量由两部分组成:data 和 grad。 data是指变量包裹的原始张量,grad是指张量的梯度。变量的基本用途是计算张量的梯度。它记录了对创建者函数的引用。在变量的帮助下,我们可以构建一个计算图,因为它表示图中的一个节点。
有计算
输出:
tensor(6.)
None
在上面的代码中,我们使用变量来包装张量并进行求和。由于总和是 6,它是一个常数,因此只是导数的梯度因此为 None。
Pytorch中张量和变量的区别
Tensor | Variable |
---|---|
A tensor is the basic unit of Pytorch | A variable wraps around the tensor. |
A tensor can be multidimensional. | Variables act upon tensors and has two parts data and gradient. |
Tensors can perform operations like addition subtraction etc. | Variables can perform all the operations that are done on tensors plus it calculates gradient. |
Tensors are usually constant. | Variables represent changes in data. |
Tensors can support integer datatypes. | If requires_grad is True variables can support only float and complex datatype. |