ニューラル ネットワークの出力を計算する関数を作成したいと考えています。私の NN の要素は、19D 入力ベクトルと 19D 出力ベクトルです。50 ニューロンの隠れ層を 1 つ選択します。私のコードは次のとおりですが、正しく機能するかどうかはわかりません。
double *BuildPlanner::neural_tactics(){
norm(); //normalize input vector
ReadFromFile(); // load weights W1 W2 b1
double hiddenLayer [50][1];
for(int h=0; h<50; h++){
hiddenLayer[h][0] =0;
for(int f = 0; f < 19; f++){
hiddenLayer[h][0] = hiddenLayer[h][0] + W1[h][f]*input1[f][0];
}
}
double HiddenLayer[50][1];
for(int h=0; h<50; h++){
HiddenLayer[h][0] = tanh(hiddenLayer[h][0] + b1[h][0]);
}
double outputLayer[50][1];
for(int h=0; h<19; h++){
for(int k=0; k<50; k++){
outputLayer[h][0] = outputLayer[h][0] + W2[h][k]*HiddenLayer[k][0];
}
}
double Output[19];
for(int h=0; h<19; h++){
Output[h] = tanh(outputLayer[h][0]);
}
return Output;
}
実際、行列の乗算についてはよくわかりません。W1*input+b1 で、行列のサイズは 50x19 * 19x1 + 50x1 で、W2*outHiddenLayer は 19x50*50x1 です!