第一种

%%
%用神经网络解决异或问题 clear
clc
close
ms=4;%设置4个样本
a=[0 0;0 1;1 0;1 1];%设置输入向量
y=[0,1,1,0];%设置输出向量
n=2;%输入量的个数
m=3;%隐层量的个数
k=1;%输出层的个数
w=rand(n,m);%为输入层到隐层的权值赋初值
v=rand(m,k);%为隐层到输出层的权值赋权值
yyuzhi=rand(1,m);%为输入层到隐层的阈值赋初值
scyuzhi=rand(1,1);%为隐层到输出层的阈值赋权值
maxcount=10000;%设置最大的计数
precision=0.0001;%设置精度
speed=0.2;%设置训练率
count=1;%设置计数器的初始值 while(count<=maxcount)
cc=1;%cc为第几个样本
%样本数少于ms=4时执行
while(cc<=ms)
%计算第cc个样本的输出层的期望输出
for l=1:k
o(l)=y(cc);
end
%获得第cc个样本的输入的向量
for i=1:n
x(i)=a(cc,i);
end
%%
%计算隐层的输入输出
%b(j)为隐层的输出,转移函数为logsig函数
for j=1:m
s=0;
for i=1:n
s=s+w(i,j)*x(i);
end
s=s-yyuzhi(j);
b(j)=1/(1+(exp(-s)));
end %%
%计算输出层的输入输出
%b(j)为输出层的输入,c为输出层的输出,转移函数为logsig函数
%for t=1:k 此处k为1,所以循环不写
for t=1:k
ll=0;
for j=1:m
ll=ll+v(j,t)*b(j);
end
ll=ll-scyuzhi(t);
end
%c(t)=l/(1+exp(-l))引文k为1,所以直接用下式
% c=l/(1+exp(-ll));
if ll<0
c=0;
else
c=1;
end %%
%计算误差
errort=(1/2)*((o(l)-c)^2);
errortt(cc)=errort;
%计算输出层各单元的一般化误差
scyiban=(o(l)-c)*c*(1-c);
%计算隐层的一般化误差
for j=1:m
e(j)=scyiban*v(j)*b(j)*(1-b(j));
end %修正隐层到输出层连接权值和输出层各阈值
for j=1:m
v(j)=v(j)+speed*scyiban*b(j);
end
scyuzhi=scyuzhi-speed*scyiban;
%修正输入层到中间层的权值和阈值
for i=1:n
for j=1:m
w(i,j)=w(i,j)+speed*e(j)*x(i);
end
end
for j=1:m
yyuzhi(j)=yyuzhi(j)-speed*e(j);
end
cc=cc+1;
end %%
%计算count一次后的误差
tmp=0;
for i=1:ms
tmp=tmp+errortt(i)*errortt(i);
end
tmp=tmp/ms;
error(count)=sqrt(tmp);
%判断是否小于误差精度
if(error(count)<precision)
break;
end
count=count+1;
end
errortt
count
p=1:count-1;
plot(p,error(p))

 第二种

%%用matlab工具箱实现异或
p=[0 0 1 1;0 1 0 1];%p为输入
t=[0 1 1 0];%t为理想输出
%隐含层有2个神经元,输出层有1个神经元,隐含层的传输函数为logsig函数
%输出层的传输函数为purelin函数
net=newff(minmax(p),[2,1],{'logsig','purelin'},'trainlm');
net.trainParam.epochs=1000;%训练的最大次数为1000
net.trainParam.goal=0.0001;%训练的精度为0.0001
LP.lr=0.1;%训练的学习率为0.1
net.trainParam.show=20;%显示训练的迭代过程
net=train(net,p,t);%开始训练
out=sim(net,p);%用sim函数仿真验证

  

【神经网络】BP算法解决XOR异或问题MATLAB版的更多相关文章

  1. 多层神经网络BP算法 原理及推导

    首先什么是人工神经网络?简单来说就是将单个感知器作为一个神经网络节点,然后用此类节点组成一个层次网络结构,我们称此网络即为人工神经网络(本人自己的理解).当网络的层次大于等于3层(输入层+隐藏层(大于 ...

  2. 神经网络BP算法C和python代码

    上面只显示代码. 详BP原理和神经网络的相关知识,请参阅:神经网络和反向传播算法推导 首先是前向传播的计算: 输入: 首先为正整数 n.m.p.t,分别代表特征个数.训练样本个数.隐藏层神经元个数.输 ...

  3. 神经网络(BP)算法Python实现及简单应用

    首先用Python实现简单地神经网络算法: import numpy as np # 定义tanh函数 def tanh(x): return np.tanh(x) # tanh函数的导数 def t ...

  4. 深度学习——前向传播算法和反向传播算法(BP算法)及其推导

    1 BP算法的推导 图1 一个简单的三层神经网络 图1所示是一个简单的三层(两个隐藏层,一个输出层)神经网络结构,假设我们使用这个神经网络来解决二分类问题,我们给这个网络一个输入样本,通过前向运算得到 ...

  5. (转)神经网络和深度学习简史(第一部分):从感知机到BP算法

    深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...

  6. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

  7. stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)

    在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(trai ...

  8. 神经网络中 BP 算法的原理与 Python 实现源码解析

    最近这段时间系统性的学习了 BP 算法后写下了这篇学习笔记,因为能力有限,若有明显错误,还请指正. 什么是梯度下降和链式求导法则 假设我们有一个函数 J(w),如下图所示. 梯度下降示意图 现在,我们 ...

  9. 人工神经网络反向传播算法(BP算法)证明推导

    为了搞明白这个没少在网上搜,但是结果不尽人意,最后找到了一篇很好很详细的证明过程,摘抄整理为 latex 如下. (原文:https://blog.csdn.net/weixin_41718085/a ...

随机推荐

  1. Spring使用内存数据库二

    在上篇<Spring 使用内存数据库>中我们使用Hibernate作为ORM的框架,直接调用Hibernate的API进行相关的持久化操作,但在实际项目中,可能会由于公司规定等原因要求统一 ...

  2. 解决IE弹框提示“是否停止运行此脚本”问题

    有少数情况因为js处理内容较多,系统计算标红和刷新页面较慢,IE可能会弹框提示“是否停止运行此脚本”,若想要继续,点击“否”即可.并同时按照下面的设置更改一下注册表,即可解决弹框问题. http:// ...

  3. rviz学习笔记(一)——Markers: Sending Basic Shapes (C++) 发送基础形状

    一.创建一个包——进行marker练习 1.创建ROS工作空间和包 mkdir -p ~/catkin_ws/src #创建工作空间目录 #创建ROS数据包 catkin_create_pkg usi ...

  4. 【Spring】SpringMVC中浅析数据的传递方式

    包括了基本数据类型的传递和 Date数据类型的传递.关于SpringMVC的配置可以参见基于注解实现SpringMVC+MySQL 假设有表单页面如下: <h1>登录</h1> ...

  5. Linux下通过关键字模糊查找搜索文件

    [背景] 想要在Linux下面,找之前不知道放到哪里的一个tomcat的文件. [折腾过程] 1.最后是参考: linux查找文件命令find – 发芽的石头 – 博客频道 – CSDN.NET 去搜 ...

  6. Easyui combobox 始终选择第一个的问题

    //必须指定 id 和 text $('#contact_city').combobox({ valueField:'id', textField:'text', });

  7. CStatic的透明背景方法

    原文链接: http://blog.sina.com.cn/s/blog_4a470fcc01000406.html 这篇文章中有些许错误,不过思路值得借鉴   如果在一个有颜色的窗体中创建一个CSt ...

  8. SharePoint 2010、2013多个域之间互信(Domain Trust)的设计与实施

    在现实的业务场景中,有时为了更好的管理域用户和服务.我们往往会创建多个分散式的域,每个域的Administrator专注于维护特定域中的用户和资源,Administrator也可以定义安全策略,比如账 ...

  9. [转]PostgreSQL教程:系统表详解

    这篇文章主要介绍了PostgreSQL教程(十五):系统表详解,本文讲解了pg_class.pg_attribute.pg_attrdef.pg_authid.pg_auth_members.pg_c ...

  10. 要想有什么样的成就就要有什么样的眼光-SNF快速开发平台

    1.普通人的圈子,谈论的是闲事,赚的是 工资,想的是明天. 2.生意人的圈子,谈论的是项目,赚的是 利润,想的是下一年. 3.事业人的圈子,谈论的是机会,赚的是 财富,想到的是未来和保障. 4.智慧人 ...