关闭

用一个神经元来实现and表

685人阅读 评论(0) 收藏 举报

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

 

//用一个神经元来实现这个功能
//这个二维数组中,数字的意义为
/*
bias,first input,second input,target output
1,        1,            1,                1
1,        1,            -1,                -1
1,        -1,            1,                -1
1,        -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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:439531次
    • 积分:6096
    • 等级:
    • 排名:第4320名
    • 原创:178篇
    • 转载:40篇
    • 译文:1篇
    • 评论:28条
    最新评论