关于Pytorch中autograd的若干(踩坑)总结

目录

 

关于Variable和Tensor

叶子节点leaf

autograd操作

Tensor.data和Tensor.detach()

autograd.grad和hook


关于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> 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值