RuntimeError: “addmm_cuda“ not implemented for ‘Int‘

cuda不支持整数的矩阵乘法

如下所示:

import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(device)
a=torch.tensor([1,2,3],dtype=torch.int).to(device)
b=a.unsqueeze(dim=-1)@ a.unsqueeze(dim=0)
print(b)

结果

Traceback (most recent call last):
  File "____mytest.py", line 5, in <module>
    b=a.unsqueeze(dim=-1)@ a.unsqueeze(dim=0)
RuntimeError: "addmm_cuda" not implemented for 'Int'
 


但是当改成CPU时

import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(device)
a=torch.tensor([1,2,3],dtype=torch.int)
b=a.unsqueeze(dim=-1)@ a.unsqueeze(dim=0)
print(b)

cuda
tensor([[1, 2, 3],
        [2, 4, 6],
        [3, 6, 9]], dtype=torch.int32)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是由于在使用 PyTorch 的 CUDA 加速时,尝试对 'long' 类型的张量执行 'addmm' 操作,但是该操作并没有被实现。建议将张量类型转换为 'float' 或 'double' 类型,或者使用 CPU 进行计算。 ### 回答2: 这个错误是指在PyTorch的代码中,使用了“addmm_cuda”函数,但是这个函数没有针对‘long’数据类型进行实现,导致出现了“not implemented”错误。addmm_cuda函数是PyTorch中的一个矩阵操作函数,用于将两个矩阵相乘并加上一个偏置矩阵得到一个新的输出矩阵。 如果在代码中使用long类型,这个函数就会报错,因为long类型是在CPU上实现的,而addmm_cuda是PyTorch中的一个GPU函数,专门针对GPU上的float和double数据类型进行优化的。因此,如果想要使用这个函数,应该使用float或double类型的数据。 要解决这个错误,一种方法是在代码中使用float或double数据类型,尤其是当使用GPU计算时,需要确保数据类型的正确性。另外一种方法是通过更改代码来实现针对long数据类型的addmm_cuda函数,不过这需要相当高的技术水平和精确度,建议不要尝试。 总之,在进行PyTorch代码开发时,需要注意数据类型的选择和正确性,避免出现类似的错误。 ### 回答3: 该错误通常是由于使用PyTorch的GPU版本时,尝试在数据类型为long的张量上执行addmm操作而导致的。 PyTorch是一个用于深度学习Python库,可以使用GPU进行高效计算。CUDNN(NVIDIA用于深度神经网络的最新库)可以加速多个操作,例如矩阵乘法,但是CUDNN仅用于float和double类型的张量。因此,如果在数据类型为long的张量上执行addmm操作,将无法使用CUDNN进行加速,这就是出现“addmm_cuda not implemented for 'long'”错误的原因。 解决此错误的方法是将数据类型从long更改为float或double。可以使用张量的type方法轻松更改数据类型。例如,x = x.type(torch.FloatTensor)将张量x的类型从long更改为float。 此外,还可以使用数据类型适当的初始化方法来避免此错误。例如,torch.zeros和torch.ones的默认类型为float,而torch.zeros(n,dtype = torch.long)和torch.ones(n,dtype = torch.long)的类型为long。 总之,务必注意数据类型的选择,并确保在执行操作之前,了解所用数据类型是否有GPU加速器的支持。使用type方法可以轻松地更改数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值