当前位置:   article > 正文

ValueError: can‘t optimize a non-leaf Tensor 数据在cpu 和gpu之间转换的时候涉及到requires_grad和is_leaf的趣事_valueerror: can't optimize a non-leaf tensor

valueerror: can't optimize a non-leaf tensor

当我生成一个可导类型的cpu张量的时候,判断其是否为叶子节点,显示为True ,如下面的代码所示:

  1. x = torch.randn(750,2048,requires_grad=True)
  2. print(x.is_leaf)
  3. #输出为:True

但是当我直接把这个生成的cpu类型迁移到gpu上时,有意思的事情发生了:

  1. x = torch.randn(750,2048,requires_grad=True).cuda()
  2. print(x.is_leaf)
  3. #输出为 False

很蒙蔽吧,那么如何让一个生成的张量迁移到gpu上,并且在gpu上也为叶子节点呢?先将数据迁移到gpu上,然后再设置gpu上面的张量的requires_grad为True ,这样就可以了:

  1. x = torch.randn(750,2048).cuda()
  2. x.requires_grad = True
  3. print(x.is_leaf)
  4. #输出结果为: True

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/362522
推荐阅读
相关标签
  

闽ICP备14008679号