编程De 发表于 2012-12-13 21:25:18

BP神经网络-

<div id="cnblogs_post_body">      上一篇C语言实现上 中介绍了程序实现时定义的一些数据结构、程序执行的流程以及 程序的基本骨架(详情见 C语言实现上)。留下了两个关键函数computO(i) 和 backUpdate(i) 没有分析实现,参数 i 代表的是第 i 个样本,本篇我们一起来分析下这两个函数的实现。
BP神经网络输出

      函数 computO(i) 负责的是通过BP神经网络的机制对样本 i 的输入,预测其输出。回想BP神经网络的基本模型(详情见 基本模型)对应的公式(1)还有 激活函数对应的公式(2):
http://pic002.cnblogs.com/images/2012/409098/2012080108370288.gif   
http://pic002.cnblogs.com/images/2012/409098/2012080108371095.gif
      
      在前篇设计的BP神经网络中,输入层与隐藏层权重对应的数据结构是w,隐藏层与输出层权重对应的数据结构是v,并且数组 o 记录的是神经元通过激活函数对外的输出,BP神经网络预测的样本结果保存在OutputData中。由此,就可以得到以下实现的参考代码:
<div class="cnblogs_code">void computO(int var){    int i,j;    double sum,y;                /*            神经元输出         */            for (i = 0; i < Neuron; ++i){      sum=0;      for (j = 0; j < In; ++j)            sum+=w*d_in[var];      o=1/(1+exp(-1*sum));    }/*隐藏层到输出层输出 */    for (i = 0; i < Out; ++i){      sum=0;      for (j = 0; j < Neuron; ++j)            sum+=v*o;      OutputData=sum;    }    }
页: [1]
查看完整版本: BP神经网络-