我有两个矩阵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 ??
答案 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];
}
}