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

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.org/tutorials 以下是基于实例来入门pytorch Learnin...
    MiracleJQ阅读 1,839评论 0 4
  • 概述 在新版本中,PyTorch引入了许多令人兴奋的新特性,主要的更新在于 Variable和Tensor的合并 ...
    古de莫宁阅读 6,171评论 0 1
  • Tensors #Tensors#Tensors和numpy中的ndarrays较为相似,因此Tensor也能够使...
    MiracleJQ阅读 1,659评论 0 1
  • 日子选的好,元旦。 兄弟姐妹们聚在一起,难得。 日子好过多了。 大家开车去饭店吃饭。二哥哥开的饭店,菜量足,可口。...
    奔跑的方子阅读 364评论 0 0
  • 两个人的灵魂应当高度合一,而不是互相牵制。
    言一girl阅读 221评论 0 0