利用隐藏神经元解决异或问题的小型示例程序

简介:

实例出自Simon Hayking的《神经网络原理》多层感知器一节。

  问题简单叙述如下:从0和1的重集中选择2个元素进行异或,其输入是非线性可分模式。即,不能用一条直线将(0,0)、(0,1)、(1,0)、(1,1)根据它们异或的结果用一条直线进行划分。因此,一个简单感知器不能解决XOR问题。这里使用隐藏神经元进行解决划分问题。程序比较简单,也没什么泛用性。

  激活函数phi(这里使用阈值函数)、神经元neuron、权值、偏置等术语请参照原书。模拟程序如下:

复制代码
#include <stdio.h>
#include <stdlib.h>

struct neuron {
    int w1;
    int w2;
    float b;
};

int phi(struct neuron *n, int i,int j) {
    float ret;
    ret = (float)(n->w1)*i + (float)(n->w2)*j + (float)(n->b);
    if (ret<0)
        return 0;
    else
        return 1;
}

int main() {
    int ret,k;
    int i[4] = {0,1,0,1};
    int j[4] = {0,0,1,1};
    struct neuron n1 = {1,1,-1.5};
    struct neuron n2 = {1,1,-0.5};
    struct neuron n3 = {-2,1,-0.5};
    for (k=0;k<4;k++) {
        ret = phi(&n3,phi(&n1,i[k],j[k]),phi(&n2,i[k],j[k]));//神经元的构成方式
        printf("(%d,%d),output is %d\n",i[k],j[k],ret);
    }
    return 1;
}
复制代码

输出结果:

(0,0),output is 0
(1,0),output is 1
(0,1),output is 1
(1,1),output is 0

  





本文转自五岳博客园博客,原文链接:www.cnblogs.com/wuyuegb2312/archive/2012/09/17/2689279.html,如需转载请自行联系原作者

目录
相关文章
|
网络安全 开发工具 git
Git clone仓库报错 OpenSSL SSL_read: Connection was reset
使用 Git clone 一仓库,报错,这种情况一般是网络不稳定导致,如果重新 clone 尝试是否成功;如果还出现这个问题,也有可能 ssl 证书验证方面的问题, 设置 httpsslVerify 属性取消验证,执行如下命令。
578 0
Git clone仓库报错 OpenSSL SSL_read: Connection was reset
|
SQL C# API
How to write own add-in for SSMS 2012 (Final release version)
原文 How to write own add-in for SSMS 2012 (Final release version) Reading internet forums I have noticed that some developers want to experiment and w...
1164 0
|
4天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
332 103
|
4天前
|
JSON fastjson Java
FastJson 完全学习指南(初学者从零入门)
摘要:本文是FastJson的入门学习指南,主要内容包括: JSON基础:介绍JSON格式特点、键值对规则、数组和对象格式,以及嵌套结构的访问方式。FastJson是阿里巴巴开源的高性能JSON解析库,具有速度快、功能全、使用简单等优势,并介绍如何引入依赖,如何替换Springboot默认的JackJson。 核心API: 序列化:将Java对象转换为JSON字符串,演示对象、List和Map的序列化方法; 反序列化:将JSON字符串转回Java对象,展示基本对象转换方法;
|
5天前
|
缓存 JavaScript 前端开发
JavaScript 的三种引入方法详解
在网页开发中,JavaScript 可通过内联、内部脚本和外部脚本三种方式引入 HTML 文件,各具适用场景。本文详解其用法并附完整示例代码,帮助开发者根据项目需求选择合适的方式,提升代码维护性与开发效率。
198 110
|
5天前
|
Android开发 开发者 Windows
这是我设计的一种不关机,然后改造操作系统的软件设计思路2.0版本
本文介绍了在不重启系统的情况下实现操作系统改造的两种方案。第一种方案通过SLFM Recovery模式,在独立于操作系统的最高权限环境下完成系统更新与改造,并支持断电恢复与失败回滚。第二种方案采用多分区机制,通过SLFM套件在独立分区中完成系统改造,适用于可中断与不可中断服务场景,确保系统更新过程的安全与稳定。
230 132