#569. 矩阵运算

    ID: 569 传统题 3000ms 512MiB 尝试: 3 已通过: 1 难度: 3 上传者: 标签>CCF CSP认证第 30 次CCF CSP软件能力认证数学矩阵乘法线性代数

矩阵运算

问题描述

Softmax(Q×KTd\frac{Q\times K^{T}}{\sqrt{d}}) ×V\times V 是 Transformer 中注意力模块的核心算式,其中 Q,K,VQ,K,V 均为 n×dn\times d 的矩阵,KTK^{T} 表示 KK 的转置,×\times 表示矩阵乘法。为简化计算,题目将 Softmax 用一维向量 WW(长度为 nn)替代,得到简化的表达式:

(W(Q×KT))×V.\bigl(W\cdot (Q\times K^{T})\bigr)\times V.

这里点乘 W(Q×KT)W\cdot (Q\times K^{T}) 表示按行标量缩放:若 M=Q×KTM=Q\times K^{T},记 W(i)W(i) 为向量 WW 的第 ii 个元素,则把 MM 的第 ii 行的每个元素都乘以 W(i)W(i),得到新的 n×nn\times n 矩阵,再与 VV 相乘,结果为一个 n×dn\times d 矩阵。

现给出矩阵 Q,K,VQ,K,V 和向量 WW,请计算上述简化表达式的结果矩阵并输出。

输入格式

  • 第一行包含两个正整数 nndd,表示矩阵的维度(行数与列数);

  • 接着依次输入矩阵 QQKKVV。每个矩阵按行给出,共 nn 行,每行包含 dd 个用空格分隔的整数;第 ii 行第 jj 个数对应矩阵第 ii 行第 jj 列的元素;

  • 最后一行包含 nn 个整数,表示向量 WWnn 个元素(W(1),W(2),,W(n)W(1),W(2),\dots,W(n))。

  • 1n1041\le n\le 10^41d201\le d\le 20

  • 矩阵与向量中的元素均为整数,且绝对值不超过 10001000

输出格式

输出共 nn 行,每行包含 dd 个用空格分隔的整数,表示计算结果矩阵的第 11 行到第 nn 行。

样例输入

3 2
1 2
3 4
5 6
10 10
-20 -20
30 30
6 5
4 3
2 1
4 0 -5

样例输出

480 240
0 0
-2200 -1100