神经网络反向传播(3)--C++代码实现

这里代码实现的是专栏开始我们用到的神经网络模型,需要强调一下:本文实现的参数更新主要是根据一个输出节点的偏差来进行更新,并非所有的输出节点的误差。

神经网络反向传播(3)--C++代码实现_第1张图片

根据计算需要,定义两个结构体储存权重参数、偏置参数和各节点激活前后的输出

struct net_param{   //正向传播参数结构
    vector> input_to_hidden_weight;
    vector> hidden_to_output_weight;
    vector bias_of_hidden;
    vector bias_of_output;
};

struct trans_val{
    vector hid_out;//隐藏层激活后输出
    vector hid_net;//隐藏层未激活输出
    vector out_net;//输出层未激活输出
};

具体代码如下,函数中action变量指的是具体更新参数的输出节点,w_lr_alpha为权重参数更新时的学习率,b_lr_gamma为偏置参数更新时的学习率。

void neural_BP(double error, net_param param, trans_val temp_val, vector output, double W_lr_alpha,double b_lr_gamma,int action)
{
    cout<&

你可能感兴趣的:(神经网络反向传播,神经网络,c++,人工智能)