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

PyTorch矩阵乘法报错排查:线性回归中的维度与数据类型问题

搞定你的PyTorch线性回归问题:数据类型+维度错误修复

嘿,看你卡了3小时,肯定急坏了!咱们先把两个问题拆开来解决——一个是数据类型不匹配的RuntimeError,另一个是权重偏置的维度搞错了,一步步来:

1. 先解决数据类型不匹配的报错

你遇到的RuntimeError: Expected object of scalar type Double but got scalar type Float,原因很直白:

  • 用numpy读进来的数据默认是**float64(Double)**类型,转成PyTorch张量后还是Double类型
  • 但torch.randn()生成的权重w和偏置b默认是**float32(Float)**类型
  • PyTorch做矩阵乘法时要求参与运算的张量类型必须一致,所以直接触发了报错

有两种修复方式,更推荐第一种(符合PyTorch默认的高效计算习惯):

  • 把输入张量转成float32:将inputs = torch.from_numpy(data_input)改成inputs = torch.from_numpy(data_input).float()
  • 或者把权重偏置改成double类型:w = torch.randn(..., dtype=torch.double, requires_grad=True),b同理

2. 再修正权重和偏置的维度错误

你的任务是用4个输入特征预测1科成绩(grade_one),线性回归的维度逻辑应该是这样的:

  • 输入张量inputs的形状是(样本数N, 特征数in_features) → 也就是(395,4)
  • 权重w的正确形状应该是(输出特征数out_features, 输入特征数in_features) → 这里输出是1科成绩,所以是(1,4)
  • 偏置b的形状应该是(输出特征数out_features,) → 也就是(1,)

你原来的w=(395,4)转置后是(4,395),和inputs=(395,4)相乘会得到(395,395)的结果,这完全不是我们要的预测值,而且偏置b=(4)也没法和这个结果相加,维度肯定错了。

修改后的权重偏置定义:

w = torch.randn(1, 4, requires_grad=True)
b = torch.randn(1, requires_grad=True)

这样inputs @ w.t()会得到(395,1)的结果,和b相加时PyTorch会自动广播b到(395,1),维度就完全匹配了。

完整修改后的代码

import torch
import numpy as np
from numpy import genfromtxt

# 读取数据部分不变
data = np.genfromtxt('student-mat.csv', delimiter=',', dtype=float)
data_input = data[1:, 0:4]
output = data[1:, 4:7]

# 修复1:把输入转成float32类型,保证和权重偏置类型一致
inputs = torch.from_numpy(data_input).float()
outputs = torch.from_numpy(data[1:, 4:5]).float()  # 输出也转成float32,后续计算Loss时类型不会冲突

# 修复2:修正权重和偏置的维度
w = torch.randn(1, 4, requires_grad=True)
b = torch.randn(1, requires_grad=True)

def model(x):
    return x @ w.t() + b

preds = model(inputs)
print(preds.shape)  # 现在应该输出torch.Size([395, 1]),完全符合预期
print(preds)

额外小提示

如果之后要同时预测3科成绩(输出是(395,3)),只需要把权重改成(3,4),偏置改成(3,)就行:输入(395,4) × 权重转置(4,3) → (395,3),加偏置(3,)时会自动广播成(395,3),逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:22:34