我知道当我的模型使用 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)
img = img.cuda()
我最近也遇到了这个问题,可能是因为你的模型是半精度的,即参数具有 16 位浮点表示,但通过网络传递的输入不是那么精度。
看到代码我认为您知道如何使用混合精度。唯一可能的问题是代码中任何位置的输入都不是 half 或 float16 类型。检查传递给模型的所有输入,或者参数“half”处理不当。
如果您仍然遇到问题,只需对模型使用全精度或 float32,它不会对执行时间产生太大影响。