📜  Pytorch中张量和变量的区别

📅  最后修改于: 2022-05-13 01:55:10.939000             🧑  作者: Mango

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中张量和变量的区别

TensorVariable
A tensor is the basic unit of PytorchA 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.