RuntimeError: 1D tensors expected, but got 2D and 2D tensors:矩阵乘法用 @ 或 matmul

简介: NumPy的`a.dot(b)`是矩阵乘法,而PyTorch的`torch.dot()`仅支持一维向量内积。二维矩阵乘法应改用`a @ b`、`torch.mm()`或`torch.matmul()`,确保内维匹配(如`(3,2)@(2,1)`→`(3,1)`),避免错误展平或转置。

原帖将 NumPy 的二维 a.dot(b) 直接翻译成 torch.dot(a,b):

RuntimeError: 1D tensors expected, but got 2D and 2D tensors

不同的 dot,不能逐字翻译

NumPy 对二维 dot 的定义能执行矩阵乘法,PyTorch 的 dot 则限定一维。原题的 (3,2) 与 (2,1) 内维本来就匹配,不需要展平或转置;更换运算入口就能保持原计算含义。

两个库的 dot 语义不同。PyTorch 的 torch.dot 接受两个一维向量;二维矩阵乘法应使用 @、torch.matmul 或 torch.mm。

下面是独立示例,先检查两个真正参与乘法的矩阵:

import torch
a = torch.ones(3, 2)
b = torch.ones(2, 1)
print("josh050608")
print("a:", a.shape, a.dtype, a.device)
print("b:", b.shape, b.dtype, b.device)
result = a @ b
assert result.shape == (3, 1)
print(result)

把失败行改成 result = a @ b 即可保留原题想要的矩阵乘法。内维应匹配,即 a.shape[-1] == b.shape[-2],两者还需有兼容的 dtype 与相同设备。

如果你实际需要逐元素乘法,应使用 a * b,但它遵循广播规则,结果不是矩阵乘积。不要把两个矩阵 flatten 后再 dot;那会改变计算目标,只得到一个内积标量。

二维输入可以使用 torch.mm(a,b);含批次的矩阵乘法通常用 matmul,并单独核对批次轴的广播含义。验证时不仅检查不报错,也确认输出行数来自 a、列数来自 b。原题两矩阵全为 1,因此每个输出元素在数学上应为 2。

用非全 1 数据检查乘法方向

全 1 示例容易掩盖转置或广播错误。下面用可手算的数据检查矩阵乘积,同时演示一维 dot 的合法场景:

import torch
a = torch.tensor([[1., 2.], [3., 4.], [5., 6.]])
b = torch.tensor([[10.], [100.]])
product = a @ b
expected = torch.tensor([[210.], [430.], [650.]])
assert torch.equal(product, expected)
assert torch.equal(torch.mm(a, b), expected)
assert torch.dot(a[0], b[:, 0]).item() == 210.0
print("matrix product:", product)

a[0] 与 b[:,0] 都是一维长度 2,因此 dot 返回一个标量;整个 a 与 b 的矩阵乘法返回三行一列。输出含义不同,不能为了满足 dot 的维数要求把两个二维对象任意拉平。

含批次时再区分:[B,M,K] @ [B,K,N] 得到 [B,M,N],matmul 还允许符合规则的批次广播。若实际希望每个样本独立计算,明确检查 B 轴,避免一个 [K,N] 权重被误认为每批不同的矩阵。

修复原题只需改失败行;后续若出现内维、dtype 或设备错误,打印实际参与的 a 与 b 再处理,不要同时修改数值布局。用一个手算结果和目标 shape 验证,比只看“不抛异常”更容易发现乘法语义被改了。

参考:原始求助帖;技术依据:torch.dot(2.5)、torch.matmul(2.5)。

相关文章
|
10天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
4061 20
|
11天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
4159 49
|
11天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
1998 7
|
6天前
|
云安全 人工智能 安全
|
6天前
|
存储 弹性计算 人工智能
2026 年阿里云双十一活动入口攻略,新客服务器优惠通道、三大会场入口梳理
综合来看,2026年阿里云双十一活动入口清晰: 阿里云轻量应用服务器、阿里云ECS云服务器、阿里云GPU云服务器、阿里云百炼大模型服务平台 活动会场、综合权益中心、99计划专场三大入口覆盖服务器、AI权益与续费特价;新用户通过控制台首页banner、权益中心、产品页三处路径进入专属专场,老用户通过控制台弹窗和费用中心权益中心进入老客专区,企业用户做企业实名后解锁专属满减与阶梯折扣。
820 0
|
5天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
1121 3
|
12天前
|
安全 算法 定位技术
《高性价比人生指南》完整原版:普通人用最少的资源,过好这一生的底层逻辑~How To Live Better
📖《高性价比人生指南》是一份基于实证、拒绝焦虑的生存手册,倡导以“人生时薪”为视角,重新计算时间、金钱与精力的成本与收益。它不承诺逆袭,只教人算清账:省下的钱若耗掉时间便亏;买体验比买物品更值;睡眠是最高杠杆的健康投资;关系贵在情绪价值而非表面热络;学习重在改变行为而非自我安慰。核心理念:用低成本、高回报的微小行动,换取长期的选择权——不是成为谁,而是掌控自己人生的主动权。
2145 6
|
云安全 安全 网络安全
|
24天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
4354 58

热门文章

最新文章