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

PyTorch运行报addmm错误:CPU张量期望在GPU上该如何解决

问题排查与解决方案

核心报错原因

PyTorch中张量的.to()方法不是原地操作,不会修改原张量,只会返回移动到目标设备的新张量。你代码中test函数内的test_data.to(device)没有接收返回值,执行后test_data仍然留在CPU上,而你的模型已经提前移动到GPU,前向传播时模型参数和输入张量设备不匹配,触发了设备不匹配的报错。

修复方法

将test函数内的对应行修改为:

test_data = test_data.to(device)

同时可以优化训练阶段的target构造逻辑,避免多余的设备迁移操作,将训练阶段的target构造代码:

target = torch.Tensor(target)
target = target.to(device)

替换为:

target = torch.tensor([target], device=device)

显式指定张量形状与设备,避免广播过程中出现隐性问题。

其他可优化点

  • 当前训练每轮仅输入1个样本,batch size为1,模型收敛速度极慢,建议改为批量生成数据(如一次生成1024个样本)同时训练,收敛效率会大幅提升。
  • 仅100轮训练迭代次数不足,该任务建议至少训练5000轮以上才能得到可用的预测精度。
  • 你当前选择的SGD学习率0.1偏大,可调整为0.01减少训练过程中的损失抖动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:06:03