Tag Archives: 反向传播算法

根据Google的AForge.NET中的源码分析BP反向传播算法原理

    Aforge.net神经网络模型中,有BP学习算法,BP算法直接使用的是激活网络类,而不是用的接口,结果导致使用BP算法,就必须要继承激活网络类来进行覆盖函数调用,而激活网络类如果进行继承的话,会有很多麻烦的事,修改网络结构或是调整算法,并不是很灵活。     在GOOGLE的这个库中,神经网络算法比较简单,其结构大体是:     网络包括多个层叠加,而层中包括神经元。     建立一个激活网络的对象,然后指出要分多少层及每层多少个神经层,默认它是三层,一层为输入,一层为输出,输入即是输入的向量,即参数的个数,而输出则是输出的结果,可以是一个或是多个。     在计算时,先是输入的数据,进入每一层,先从神经元开始计算:     1、神经元的计算:每个神经元与输入的数据,输入的数据乘以神经元自身的权重,求出总和,然后再加上一个阈值,然后把这个值用激活函数处理一下(激活就是把它转换成处处可求导的),并进行返回给层。   ActivationNeuron.cs类中的Compute函数:    public override double Compute( double[] input )         {             // check for corrent input vector             if ( input.Length != inputsCount )                 throw new ArgumentException( "Wrong length of the input vector." );             // initial sum value             double … 阅读全文 根据Google的AForge.NET中的源码分析BP反向传播算法原理