用一个神经元来实现and表

    技术2022-05-11  61

    看到教材上有这么一个例子,先做下来,练练手,很简单的代码

     

    // 用一个神经元来实现这个功能 // 这个二维数组中,数字的意义为 /*bias,first input,second input,target output1,        1,            1,                11,        1,            -1,                -11,        -1,            1,                -11,        -1,            -1,                -1*/ private   double [,] myandtable = new   double [ 4 , 4 ] {                                {1,1,1,1},                                {1,1,-1,-1},                                {1,-1,1,-1},                                {1,-1,-1,-1}                              } ; // 调整权值 // 第一前向计算 // 第二后向反馈 private   void  AddJustWeight() {    //在有了输入的情况下,我们先要,初始化权值,三个输入的权值,最后一个是调整的权值    double bw,w1,w2,addjustweight=0.1 ;    bw=new Random().NextDouble()*2-1;    w1=new Random().NextDouble()*2-1;    w2=new Random().NextDouble()*2-1;    //bw=0.5;w1=0.3;w2=0.7;    Debug.WriteLine(string.Format("random right is {0},{1},{2}",bw,w1,w2));    for(int i=0;i<4;i++)    {        double result=bw*myandtable[i,0]+w1*myandtable[i,1]+w2*myandtable[i,2];        if(result>0.0) result=1.0;        if(result!=myandtable[i,3])        {            double delta=addjustweight*(myandtable[i,3]-result);            bw+=delta*myandtable[i,0];            w1+=delta*myandtable[i,1];            w2+=delta*myandtable[i,2];            Debug.WriteLine(string.Format("addjust right is {0},{1},{2}",bw,w1,w2));        }    } }

     

     


    最新回复(0)