开发者社区> 问答> 正文

使用einsum或matmul的Matrix-Vector产品?

我需要将许多向量beta与相同的矩阵M相乘。

假设矩阵M具有形状(150,7),并且beta-s存储在形状变量(7,128,128)中。

您将如何计算beta中每个元素的乘积M * eta?

直到知道我正在那样做:

import numpy as np

M=np.ones((150,7))
beta=np.ones((7,128,128))

result=M@(beta.reshape((7,128\*28))) # the result has shape (150,128\*28)
result=np.reshape(result,(150,128,128))

我猜想np.einsum()在这里可能很有用,但是我不明白如何告诉它进行乘法/加法的方向。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-25 09:18:24 2752 0
1 条回答
写回答
取消 提交回答
  • 这是使用np.einsum的方法:

    np.einsum('ij,jkl->ikl', M, beta)
    

    *

    result=M@(beta.reshape((7,128*28))) # the result has shape (150,128*28) result=np.reshape(result,(150,128,128))

    np.allclose(np.einsum('ij,jkl->ikl', M, beta), result)

    True

    回答来源:stackoverflow

    2020-03-25 09:18:31
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载