我想創建一個計算神經網絡輸出的函數。我的NN 的元素是一個19D輸入向量和一個19D輸出向量。我選擇了一個有50個神經元的隱藏層。我的代碼是以下,但我不太確定它是否正常工作。C++中的神經網絡輸出
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!
您可以先不對所有這些尺寸進行硬編碼,因此您可以輕鬆插入一些小數字並手工完成結果。 – Thomas
是它的一個好開始。但實際上,我的問題是如果乘法運行符合我的需要! –
檢查此庫:http://sourceforge.net/projects/c-c-neural-networks/ – SomethingSomething