目前官方已经弃用variable了,利用torch.autograd.Variable()生成variable对象并进行反向传播已经是过去式了。现在直接使用torch.tensor()就搞定了,可以在创建tensor时设置requires_grad=True。因此,下面并没有对variable变量进行过多的介绍,想了解就了解一下,可以结合下面的参考文章,不看也行。
pytorch中有两个基本对象:Tensor(张量)和Variable(变量)。Variable字面意思为可变的、变量,也就是说它里面存放的是可以变化的量,符合反向传播,参数更新的属性。具体而言,pytorch中存放变化值的地理位置(地址),里面的值是不停变化的。pytorch都是由tensor计算的,而tensor里面的参数是variable形式。
import torch
from torch.autograd import Variable
torch.autograd.Variable()
tensor = torch.tensor([[1, 3], [2, 4]], dtype=float)
variable = Variable(tensor, requires_grad=True)
print(f"tensor:{tensor}")
print(f"variable:{variable}")
print(variable.data) # 查看变量variable中的原始tensor数据
print(variable.grad) # 计算变量variable的梯度。由于上面并没有进行反向传播,所以输出None。
输出:
tensor:tensor([[1., 3.],
[2., 4.]], dtype=torch.float64)
variable:tensor([[1., 3.],
[2., 4.]], dtype=torch.float64, requires_grad=True)
tensor([[1., 3.],
[2., 4.]], dtype=torch.float64)
None
参考文章
Pytorch的Variable详解
Pytorch入坑二:autograd 及Variable
浅谈Pytorch中的Variable的使用方法