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
结果完全一致。