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的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch is_leaf

Pytorch is_leaf

Pytorch is_leaf

pytorch 笔记:叶子张量

RuntimeError: ‘lengths’ argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor(代码片段

TVM实战