【发布时间】:2012-09-05 02:36:16
【问题描述】:
我想创建一个计算神经网络输出的函数。我的神经网络的元素 是一个 19D 输入向量和一个 19D 输出向量。我选择了一个有 50 个神经元的隐藏层。我的代码如下,但我不太确定它是否正常工作。
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!
【问题讨论】:
-
您可以从不对所有这些尺寸进行硬编码开始,这样您就可以轻松插入一些小数字并手动查看结果。
-
是的,这是一个好的开始。但实际上我的问题是乘法是否按我想要的方式工作!
标签: c++ neural-network