目录
关于Variable和Tensor
旧版本的Pytorch中,Variable是对Tensor的一个封装;在Pytorch大于v0.4的版本后,Varible和Tensor合并了,意味着Tensor可以像旧版本的Variable那样运行,当然新版本中Variable封装仍旧可以用,但是对Varieble操作返回的将是一个Tensor。
import torch as t
from torch.autograd import Variable
a = t.ones(3,requires_grad=True)
print(type(a))
#输出:<class 'torch.Tensor'>
a=Variable(a)
print(type(a))
#输出仍旧是:<class 'torch.Tensor'>
print(a.volatile)
#输出:__main__:1: UserWarning: volatile was removed (Variable.volatile is always False)
a.volatile=True
print(a.volatile)
#输出:__main__:1: UserWarning: volatile was removed (Variable.volatile is always False)
#现版本pytorch中移除了volatile这个属性,即volatile总是false
叶子节点leaf
对于那些不是任何函数(Function)的输出,由用户创建的节点称为叶子节点,叶子节点的grad_fn
为None。
import torch as t
a = t.ones(3,requires_grad=True)
b = t.rand(3,requires_grad=True)
a,a.is_leaf
#输出:(tensor([1., 1., 1.], requires_grad=True), True)
b
#输出:(tensor([0.4254, 0.8763, 0.5901], requires_grad=True), True)
c = a*b
c.is_leaf
#输出:False.说明c不是叶子节点
a.grad_fn
#输出:None.叶子节点的grad_fn为None.
c.grad_fn
#输出:<MulBackward0 object at 0x7fa45c406278>