Pytorch中的Variable和variable.backward()

1.Variable

Pytorch在autograd模块中实现了计算图的相关功能,autograd中的核心数据结构是Variable。Variable封装了tensor,并记录对tensor的操作记录用来构建计算图。autograd.Variable主要包含三个属性:

1.data :保存variable所包含的tensor
2.grad :保存data对应的梯度,grad也是variable,而不是tensor,它与data形状一致
3.grad_fn :指向一个Function,记录tensor的操作历史,即它是什么操作的输出,用来构建计算图。

Variable的构造函数需要传入tensor,同时有两个可选参数:
1.requires_grad(bool) :是否需要对该variable进行求导
2.volatile(bool) :设置为True,构建在该variable之上的图都不会求导,专为推理阶段设计

2.variable.backward(grad_variables=None,retain_graph=None,create_graph=None)

grad_variables :形状与variable一致,对于y.backward(),grad_variable可以是tensor或序列

retain_graph :反向传播的时候需要缓存一些中间结果,反向传播之后,这些缓存就被清空,可通过指定这个参数不清空缓存,用来多次反向传播

create_graph :对反向传播过程再次构建计算图,可通过backward of backward实现求高阶导数

接下来看看autograd计算的导数和我们手动推导的导数有无区别:
y=x2ex,它的导函数是:2xex + x2ex

在这里插入图片描述
在这里插入图片描述
结果完全一致。

猜你喜欢

转载自blog.csdn.net/KeEN_Xwh/article/details/104588645