Pytorch is_leaf
Posted 爆米花好美啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytorch is_leaf相关的知识,希望对你有一定的参考价值。
转载更正自Pytorch框架之is_leaf–查看是否为叶张量
- 所有被需要计算梯度的变量直接赋值(不进行任何操作)创建的都是叶张量,注意不要包含任何操作
a = torch.rand(10, requires_grad=True) # 直接赋给a,所以a.is_leaf为True
a = torch.rand(10, requires_grad=True, device="cuda") # 直接创建赋给a的,所以为True
a = torch.rand(10, requires_grad=True) + 5 # 运算后赋给a,所以a.is_leaf为False
# .cuda()也是一个op节点
a = torch.rand(10, requires_grad=True).cuda() # 将数据移到gpu上再赋值给a,所以也是False
- 所有不需要计算的梯度张量都是叶张量,无论是否包含操作
# all_leaf is True
a = torch.rand(10) # 非梯度tensor -- 总是为True
a = torch.rand(10) + 5
a = torch.rand(10).cuda()
- 由不需要梯度的张量创建的新的需要梯度的张量是叶张量
# all_leaf is True
# 由非梯度tensor变成梯度tensor后直接赋给,可以成为叶张量
a = torch.rand(10).requires_grad_()
#由非梯度tensor移动到gpu上再变成梯度tensor后直接赋给,可以成为叶张量
a = torch.rand(10).cuda().requires_grad_()
以上是关于Pytorch is_leaf的主要内容,如果未能解决你的问题,请参考以下文章