python bp神经网络 异或_【神经网络】BP算法解决XOR异或问题MATLAB版

第一种

%%

%用神经网络解决异或问题

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)

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算法 原理及推导

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

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

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

神经网络&lpar;BP&rpar;算法Python实现及简单应用

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

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

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

&lbrack;DL学习笔记&rsqb;从人工神经网络到卷积神经网络&lowbar;1&lowbar;神经网络和BP算法

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

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

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

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

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

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

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

从 0 开始机器学习 - 神经网络反向 BP 算法!

最近一个月项目好忙,终于挤出时间把这篇 BP 算法基本思想写完了,公式的推导放到下一篇讲吧. 一.神经网络的代价函数 神经网络可以看做是复杂逻辑回归的组合,因此与其类似,我们训练神经网络也要定义代价函 ...

随机推荐

&lbrack;转&rsqb;SpringMVC Controller介绍及常用注解

一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

Winform控件重写

Winform控件重写 因为最近的项目中越来越多的遇到了比较特殊的一些控件,有时候我们自己封装一下可能更加方便我们的使用,下面是我们项目中用到的,简单做一个记录. TextBox控件重写 主要的控制代 ...

How a non-windowed component can receive messages from Windows -- AllocateHWnd

http://www.delphidabbler.com/articles?article=1 Why do it? Sometimes we need a non-windowed componen ...

WP8&period;1和Win8&period;1的不同之处

本文仅是个人见解,如有不足或错误之处欢迎批评指正~ 1.Toast: 创建Toast代码差不多但实现机制及管理上不一样 2.ApplicationData: WP8.1多了一个LocalCacheFo ...

Spring 3&period;0 注解注入详解

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

git常用命令&lt&semi;转&gt&semi;

(转自)https://www.akii.org/git-concise-operating-tutorial.html git工作原理: 分布式,每个克隆或更新远程仓库的用户都拥有⼀一份最新的完整的 ...

thinkPHP 输出及其模板调用(三)

原文:thinkPHP 输出及其模板调用(三) ThinkPHP 的输出(重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出(thinkphp\Home\L ...

PHP 文件操作类&lpar;创建文件并写入&rpar; 生成日志

EA强大的绘图工具---设计数据库表格

关于EA这个优秀的软件是从师哥哪里听来的,自己瞎点了点,感觉也没什么.近期和和智福加上一个师哥合作敲机房收费系统时,想到之前听人说EA非常强大,便随便找了找关于EA使用的帮助手冊.果然惊喜-- 如题, ...

第四节,Linux基础命令

第四节,Linux基础命令 命令是系统操作员对系统传入的指令,传入指令后回车,系统接收到指令做出相应的行为 1.查看用户位于系统什么位置 [pmd]检查操作用户位于系统的什么位置 命令         ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值