运行时错误:输入类型(float)和偏置类型(c10::Half)应该相同

问题描述 投票:0回答:1

我知道当我的模型使用 GPU 进行训练并且使用 CPU 进行测试时会发生此错误,但我不知道如何修复它。希望任何人都可以帮我解决这个问题。 谢谢。

以下是与此问题相关的一些代码:

if torch.cuda.is_available():  
    device = torch.device("cuda") 
else: 
    device = torch.device("cpu")

img = torch.from_numpy(img).to(device)
img = img.half() if half else img.float() 
img /= 255.0 
pred = model(img, augment=augment)[0]

运行时错误:输入类型(float)和偏置类型(c10::Half)应该相同

注意:设备=“cpu”

变更1

img = img.to(device)

但仍然有同样的问题
更改2
img = img.cuda()

运行时错误:在您的系统上找不到 NVIDIA 驱动程序。请检查您是否拥有 NVIDIA GPU 并从 http://www.nvidia.com/Download/index.aspx

安装了驱动程序
tensorflow keras conv-neural-network centos7 yolov7
1个回答
0
投票

我最近也遇到了这个问题,可能是因为你的模型是半精度的,即参数具有 16 位浮点表示,但通过网络传递的输入不是那么精度。

看到代码我认为您知道如何使用混合精度。唯一可能的问题是代码中任何位置的输入都不是 half 或 float16 类型。检查传递给模型的所有输入,或者参数“half”处理不当。

如果您仍然遇到问题,只需对模型使用全精度或 float32,它不会对执行时间产生太大影响。

© www.soinside.com 2019 - 2024. All rights reserved.