|
|
|
@ -175,15 +175,15 @@ void init(){
|
|
|
|
|
/*为隐藏层节点 i 分配了一个 double 类型的数组,用于存储该节点向下一层节点传播的权重。
|
|
|
|
|
使用malloc 函数在堆内存中分配足够的空间,以存储 OUTNODE 个 double 类型的权重值。
|
|
|
|
|
*/
|
|
|
|
|
hideLayer[i].weight =
|
|
|
|
|
hideLayer[i].weight = (double *)malloc(sizeof(double) * OUTNODE);
|
|
|
|
|
/*为隐藏层节点 i 分配了一个用于存储权重修正值的数组。这个数组将在神经网络的训练过程中用于存储权重的更新值。
|
|
|
|
|
使用malloc 函数在堆内存中分配足够的空间,以存储 OUTNODE 个 double 类型的权重值。
|
|
|
|
|
*/
|
|
|
|
|
hideLayer[i].weight_delta =
|
|
|
|
|
hideLayer[i].weight_delta = (double *)malloc(sizeof(double) * OUTNODE);
|
|
|
|
|
/*为隐藏层节点 i 初始化了一个随机的偏置值。
|
|
|
|
|
这个值通常是一个在 -1.0 到 1.0 之间的随机数,用于调整该节点的激活函数的阈值。
|
|
|
|
|
*/
|
|
|
|
|
hideLayer[i].bias =
|
|
|
|
|
hideLayer[i].bias = rand() % 2 - 1;
|
|
|
|
|
/*初始化了隐藏层节点 i 的偏置值修正值,初始值为0.0。*/
|
|
|
|
|
hideLayer[i].bias_delta = 0.0;
|
|
|
|
|
}
|
|
|
|
@ -263,15 +263,15 @@ int main() {
|
|
|
|
|
double sum = 0.0;
|
|
|
|
|
for (int hideLayer_Pos = 0; hideLayer_Pos < HIDENODE; ++hideLayer_Pos) {
|
|
|
|
|
/*计算每一个隐藏层节点的value和权值的乘积,相加得到sum
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
sum += hideLayer[hideLayer_Pos].value * hideLayer[hideLayer_Pos].weight[outLayer_Pos];
|
|
|
|
|
}
|
|
|
|
|
/*更新sum,使sum减去偏置值;
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
sum -= outLayer[outLayer_Pos].bias;
|
|
|
|
|
/*利用sigmod函数对得到的sum进行激活,把激活后的结果赋值给对应的输出层节点value(outLayer[outLayer_Pos].value)。
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
outLayer[outLayer_Pos].value = sigmoid(sum);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|