You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RuntimeError求助:输入float与bias c10::Half类型不匹配问题

修复RuntimeError:Input type与bias type不匹配问题

问题核心是GPU半精度训练的模型,在CPU加载时参数仍为半精度(Half),但输入默认是float32,导致类型不兼容,以下是具体修复步骤:

1. 加载模型时强制转到CPU并转为float32精度

你当前的代码只处理了输入的device,但模型本身还是GPU训练时的半精度状态。修改模型加载代码(补充到你的逻辑中):

# 替换原模型加载代码,假设原代码是 model = torch.load("your_model.pt")
model = torch.load("your_model_path.pt", map_location=device).float()
  • map_location=device:把模型参数从GPU转到当前的CPU设备
  • .float():将模型所有参数从半精度(Half)转为单精度(float32),和输入类型对齐

2. 调整输入处理逻辑,确保和模型精度一致

既然模型已经是CPU上的float32,输入也统一用float32即可,修改输入处理代码:

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

# 直接转成float32并移到对应device
img = torch.from_numpy(img).to(device).float() 
img /= 255.0 
pred = model(img, augment=augment)[0]
  • 去掉原来的img.half() if half else img.float()判断,CPU环境下用半精度不仅没必要,还可能引发兼容性问题

为什么之前的尝试没用?

  • 只改img = img.to(device):模型参数还是GPU半精度状态,输入是CPU float32,类型不匹配,报错依旧
  • 用img.cuda():你的环境没有安装NVIDIA GPU驱动,无法调用CUDA功能,所以报错

内容的提问来源于stack exchange,提问作者Trung Thanh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:34:59