在深度学习中,涉及到大量矩阵相乘,现在需要计算三个稠密矩阵A,B,C的乘积ABC,假设三个矩阵的尺寸分别为m*n,n*p,p*q,且m<n<p<q,以下计算顺序效率最高的是:()
首先,根据简单的矩阵知识,因为 A*B , A 的列数必须和 B 的行数相等。因此,可以排除C 选项,
然后,再看 A 、 B 选项。在 A 选项中, m*n 的矩阵 A 和 n*p 的矩阵 B 的乘积,得到 m*p 的矩阵 A*B ,而 A*B 的每个元素需要 n 次乘法和 n-1 次加法,忽略加法,共需要 m*n*p 次乘法运算。同样情况分析 A*B 之后再乘以 C 时的情况,共需要 m*p*q次乘法运算。因此, A 选项的(AB)C 需要的乘法次数是 m*n*p+m*p*q 。同理分析, B 选项的 A (BC)需要的乘法次数是 n*p*q+m*n*q 。
由于 m*n*p< m*n*q , m*p*q<n*p*q ,显然 A 运算次数更少,故选A 。