矩阵连乘优化

矩阵乘法次数的计算:

以两个矩阵相乘为例,A1xA2,A1和A2为两个矩阵,假设A1的行列数是pxq,A2的行列数是qxr。那么对于A1xA2而言,我们需要分别执行pxr次对应A1的行元素乘以A2的列元素,根据线性代数知识,可以得到一共需要执行pxqxr次乘法。


对于两个矩阵相乘,一旦矩阵的大小确定下来了,那么所需执行的乘法次数就确定下来了。那么对于两个以上的矩阵呢?是不是也是这样呢。实际上,对于多个矩阵相乘,乘法执行的次数与“划分”有关。例如:

 以矩阵链为例,假设三个矩阵的规模分别为10X100,100X5和5X50。

 ①以((A1*A2)*A3)方式划分,乘法执行次数为:10*100*5+10*5*50=5000+2500=7500次

 ②以(A1*(A2*A3))方式划分,乘法执行次数为:100*5*50+10*100*50=25000+50000=75000次

 我们可以发现,对于同样的矩阵链相乘而言,由于采用了不同的划分,乘法次数相差10倍。

####矩阵乘法次数的计算是看矩阵乘积结果中每个元素运算的次数之和。

  • A1×A2的乘积结果为矩阵B,B的大小为10×5,总共有50个元素,矩阵中的每个元素需要的乘法次数是100次,这是因为结果中的每个元素都需要100次的乘法运算,(以B11为例)所以A1×A2总的乘法次数等于10×5×100
    B 11 = ∑ i = 1 100 A 1 1 , i × A 2 i , 1 B_{11}=\sum_{i=1}^{100}A1_{1,i}\times A2_{i,1} B11=i=1100A11,i×A2i,1

你可能感兴趣的:(机器学习)