简单多层神经网络实现异或XOR

最近在看《Neural Network Design_Hagan》

 

然后想自己实现一个XOR 的网络。

由于单层神经网络不能将异或的判定分为两类。

 

根据 a^b=(a&~b)|(~a&b)

而 我试了一下 或 和 与 都可以用感知神经元解决,也就是一个。

 

那么与和或的实现:

hardlim (n )=a ,n>=0时 a=1;n<0时a=0;

显然需要三个神经元

神经元表达式如下:

 

 

int fun(int w[],int x[],int b)
{

return  w[0]*x[0]+w[1]*x[1]+b;        
}

int  main()
{
    int w1[2]={1,1},w2[2]={1,1},w3[2]={1,1};
    int x[2];
    while(scanf("%d%d",&x[0],&x[1])!=EOF)
    {
        
        int x2[2];
        x[0]=!x[0];
        x2[0] =hardlim( fun(w1,x,-2) );
        x[0]=!x[0];
        x[1]=!x[1];
        x2[1] = hardlim ( fun(w2,x,-2) );
        x[1]=!x[1];
        printf("%d  XOR %d = %d\n",x[0],x[1] ,hardlim( fun( w3,x2,-1)  ));
        
    }
    
    return 0;
    
}


注意x1,x2输入的时候 需要取反。

验证正确。

 

posted @   一杯半盏  阅读(651)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示