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

如何对多矩阵乘法做向量化处理,numpy.einsum的正确语法是什么

结论

你给出的einsum写法np.einsum('ij,jki->ik', A, B)是完全正确的,和你提供的循环实现逻辑完全等价。

规则对应解释

我们可以对应你的运算场景拆解einsum字符串的含义:

  • ij 对应二维矩阵A的两个维度:第一个维度i是样本序号(对应循环里的遍历变量,范围0999),第二个维度`j`是特征维度(范围089)
  • jki 对应三维矩阵B的三个维度:第一个维度j和A的特征维度对齐,做矩阵乘法的内积运算;第二个维度k是输出结果的特征维度;第三个维度i和A的样本序号对应,保证每个样本i都取B中对应i位置的二维切片参与计算
  • ->ik 表示最终输出保留样本维度i和结果特征维度k,输出矩阵shape刚好是你需要的1000*90,和目标矩阵C的维度完全匹配。

验证与优化建议

  • 你可以用小尺寸随机矩阵验证结果一致性:生成小维度的测试矩阵(比如A = np.random.rand(3,2),B = np.random.rand(2,2,3)),分别用循环和上述einsum写法计算结果,再调用np.allclose(循环计算结果, einsum计算结果),返回True即可确认正确性。
  • 如果要进一步提升大尺寸矩阵的计算效率,可以给einsum添加optimize='optimal'参数,写法为np.einsum('ij,jki->ik', A, B, optimize='optimal'),numpy会自动选择最优的计算路径,降低运算开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:15:04