Variable和Tensor本质上没有区别,不过Variable会被放入一个计算图中,然后进行前向传播,反向传播,自动求导。首先Variable是在torch.autograd.Variable中,要将一个tensor变成Variable也非常简单,比如想让一个tensor a变成Variable,只需要Variable(a)就可以了。Variable有三个比较重要的组成属性:data、grad和grad_fn。通过data可以取出Variable里面的tensor数值,grad_fn表示的是得到这个Variable的操作,比如通过加减还是乘除得到,最后grad是这个Variable的反向传播梯度,下面通过例子来具体说明一下。
# Creat Variable
x = Variable(torch.Tensor([1]), required_grad=True)
w = Variable(torch.Tensor([2]), required_grad=True)
b = Variable(torch.Tensor([3]), required_grad=True)
# Build a computational graph.
y = w * x * b # y = 2 * x + 3
# Compute gradient
y.backward() # same as y.backward(