美文网首页
Pytorch中的Variable变量---自动求导

Pytorch中的Variable变量---自动求导

作者: spectre_hola | 来源:发表于2019-01-03 10:47 被阅读0次

Variable和Tensor的区别是,Variable可以自动求导,它具有三个重要属性:data,grad,grad_fn。将一个Tensor a转化成Variable只需要Variable(a)就可以了。

grad_fn的意思是得到这个变量的操作,举个例子

x = torch.ones(2, 2, requires_grad=True)
y = x + 2
print(y.grad_fn)
#运行
<AddBackward object at 0x000001578C171C50>

意思是y是通过加法得到的

下面来说用变量求导的具体过程

#Create variable
x = Variable(torch.Tensor([1]), requires_grad = True)
w = Variable(torch.Tensor([2]), requires_grad = True)
b = Variable(torch.Tensor([3]), requires_grad = True)

#Build a comptation graph
y = w * x + b

#Compute gradients
y.backward()  #same as y.backward(torch.FloatTensor([1]))

#Print out the gradients
print(x.grad)    #x.grad = 2
print(w.grad)    #x.grad = 1
print(b.grad)    #x.grad = 1

注意其中一行y.backward(),这里它是等价于y.backward(torch.FloatTensor([1])),只是对于标量求导里面参数可以不写了,如果x是一个三维向量x = torch.randn(3),则该行需要换成y.backward(torch.FloatTensor([1, 1, 1]))才可以对应求导输出,或者y.backward(torch.FloatTensor([1, 0.1, 0.01]))是对应输出导数的对应1,0.1,0.01倍。

相关文章

网友评论

      本文标题:Pytorch中的Variable变量---自动求导

      本文链接:https://www.haomeiwen.com/subject/qxtfrqtx.html