深度学习:pytorch常见错误总结

本文通过示例代码详细解析了PyTorch中CUDA张量与CPU张量不匹配导致的错误,并提供了如何避免此类错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、expected CPU tensor (got CUDA tensor)

期望得到CPU类型张量,得到的却是CUDA张量类型。

很典型的错误,例如计算图中有的参数为cuda型有的参数却是cpu型就会遇到这样的错误。

>>> import torch
>>> from torch.autograd import Variable
>>> a = torch.Tensor([1])
>>> b = torch.Tensor([2])
>>> a = Variable(a)
>>> b = Variable(b)
>>> a.requires_grad = True
>>> b = b.type(torch.cuda.FloatTensor)
>>> c = a + b   # 这里a和b两个张量不在同一个空间一个在cpu中另一个在gpu中因此会引发错误
Traceback (most recent call last):
  File "C:\Users\dell\Anaconda3\envs\my-pytorch\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-16-60f555c9e9aa>", line 1, in <module>
    c = a + b
  File "C:\Users\dell\Anaconda3\envs\my-pytorch\lib\site-packages\torch\autograd\variable.py", line 813, in __add__
    return self.add(other)
  File "C:\Users\dell\Anaconda3\envs\my-pytorch\lib\site-packages\torch\autograd\variable.py", line 319, in add
    return self._add(other, False)
  File "C:\Users\dell\Anaconda3\envs\my-pytorch\lib\site-packages\torch\autograd\variable.py", line 313, in _add
    return Add.apply(self, other, inplace)
  File "C:\Users\dell\Anaconda3\envs\my-pytorch\lib\site-packages\torch\autograd\_functions\basic_ops.py", line 17, in forward
    return a.add(b)
TypeError: add received an invalid combination of arguments - got (torch.cuda.FloatTensor), but expected one of:
 * (float value)
      didn't match because some of the arguments have invalid types: (!torch.cuda.FloatTensor!)
 * (torch.FloatTensor other)
      didn't match because some of the arguments have invalid types: (!torch.cuda.FloatTensor!)
 * (torch.SparseFloatTensor other)
      didn't match because some of the arguments have invalid types: (!torch.cuda.FloatTensor!)
 * (float value, torch.FloatTensor other)
 * (float value, torch.SparseFloatTensor other)

WX20210128-000633@2x
微信扫码关注我哦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老潘的博客

请老潘吃块饼干!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值