Умножение матриц - PullRequest
       13

Умножение матриц

0 голосов
/ 21 февраля 2012

У меня есть две матрицы 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 Ответ

2 голосов
/ 21 февраля 2012

Матричное умножение определяется как :

C = AB ⇔ C<sub>i,j</sub> = Σ<sub>k=1..n</sub> A<sub>i,k</sub> B<sub>k,j</sub> for i,j = 1...n (in case of square matrices).

Таким образом, outputLayer является вектором.Так как HiddenLayer тоже вектор, это не умножение матрицы, а умножение вектора матрицы, что упрощает приведенную выше формулу:

b = Ax ⇔ b<sub>i</sub> = Σ<sub>k=1..m</sub> A<sub>i,k</sub> x<sub>k</sub> 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];
      }
}
...