矩阵的乘法

时间:2012-02-20 22:11:29

标签: c++ matrix-multiplication

我有两个矩阵W2和hiddenLayer,我想继续它们的乘法运算。 W2尺寸为12x50,隐藏层尺寸为50x1。上述计算的正确代码:

 for(int h=0; h<50; h++){
      for(int k=0; k<12; k++){
        outputLayer += W2[k][h]*HiddenLayer[h];
      }
}

或者我必须先放k-for ??

1 个答案:

答案 0 :(得分:2)

矩阵乘法is defined as

C = AB ⇔ Ci,j = Σk=1..n Ai,k Bk,j for i,j = 1...n (in case of square matrices).

因此outputLayer是一个向量。由于HiddenLayer也是一个向量,这实际上不是矩阵乘法而是矩阵向量乘法,这简化了上面的公式:

b = Ax ⇔ bi = Σk=1..m Ai,k xk for i = 1...n (A is an n x m matrix).

所以你的代码应该像

一样
for(int row = 0; row < 12; row++){
    outputLayer[row] = 0;
    for(int column = 0;  column < 50; column++){    
        outputLayer[row] += W2[row][column]*HiddenLayer[column];
      }
}