gpt4 book ai didi

c++ - C++中的神经网络输出

转载 作者:行者123 更新时间:2023-11-28 07:57:57 28 4
gpt4 key购买 nike

我想创建一个计算神经网络输出的函数。我的 NN 的元素是一个 19D 输入 vector 和一个 19D 输出 vector 。我选择一个包含 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!

最佳答案

我觉得你的矩阵乘法没问题,但还有其他问题——`outputLayer 是 50x1,但是 a) 你只迭代前 19 个元素,b) 你把它放在方程的 RHS 上

outputLayer[h][0] = outputLayer[h][0] + W2[h][k]...

在该元素被定义之前。这可能会导致你所有的问题。此外,虽然我假设您正在制作 outputLayer 二维以使它们看起来像矩阵,但这完全是无偿的并且当第二维的大小为 1 时会减慢速度 - 只需声明它和其他作为

双输出层[50];

因为它是一个 vector ,而且它们总是一维的,所以它实际上会使您的代码更清晰。

关于c++ - C++中的神经网络输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268764/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com