【问题标题】:batch matrix inner product of a row with every other row in matrix, in PyTorch在 PyTorch 中,行与矩阵中每隔一行的批处理矩阵内积
【发布时间】:2022-01-05 04:35:54
【问题描述】:

我有两个大小为 (16, 8, 400) 的矩阵 A,大小为 B (16, 50, 400) 的矩阵;其中 16 是批量大小。

现在我需要做的是:

对于 A 中的每一批次,我想计算单批次 A 中每一行的内积与单批次 B 中的每一行,然后得到最大内积值。换句话说,对于每个批次,我在左侧 (A) 有一个 (8, 400) 矩阵,在右侧 (B) 有一个 (50, 400) 矩阵。现在对于 A 中的每一行 (8 * 400),我想计算该行与 B 中的每一行 (1 * 400) 的内积,并得到最大内积。因此,内积运算将产生一个 (8 * 1) 大小的向量,然后得到 8 个值的最大值。为每个批次完成它会产生 (16, 50, 1) 大小的矩阵,这是我输出的首选维度。

数学公式如图 enter image description here

我该怎么做呢?我不想使用 for 循环,因为那样效率低下。出于同样的原因,我也不想使用重复方法。

【问题讨论】:

    标签: python math pytorch


    【解决方案1】:

    这行得通吗?

    C = np.max( np.matmul(A, B.transpose(0,2,1)) , axis=1 )
    

    【讨论】:

    • 非常感谢,我用随机矩阵验证了,输出的维度没有问题。之后我会验证值的正确性
    猜你喜欢
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多