使用MATLAB编写单层感知器

使用MATLAB编写单层感知器

ID:40258546

大小:22.50 KB

页数:7页

时间:2019-07-29

使用MATLAB编写单层感知器_第1页
使用MATLAB编写单层感知器_第2页
使用MATLAB编写单层感知器_第3页
使用MATLAB编写单层感知器_第4页
使用MATLAB编写单层感知器_第5页
资源描述:

《使用MATLAB编写单层感知器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、采用感知器学习规则,训练步骤如下:Step1:对各权值w0j(0),w2j(0),…,wnj(0),j=1,2,…,m(m为计算层的节点数)赋予较小的非零随机数,设置p=1;Step2:输入样本对{Xp,dp},其中Xp=(-1,x1p,x2p,…,xnp),dp=(d1p,d2p,…,dnp)为期望的输出向量(教师信号),上标p表示样本对的模式序号,设样本总数为P,则p=1,2,…,P;Step3:计算各节点的实际输出p()sgn(T()p),1,2,...,jjot=WtXj=mStep4:调整各节点对应的权值,(1)()[pp()]pjjjjW

2、t+=Wt+hd-otXη为学习率,用于控制调整速度,η值太大会影响训练的稳定性,太小则使训练的12(,,...,...,)Tjm输出层O=oooo输入层12(,,...,,...,)jmW=WWWW012(,,,...,,...,)TinX=xxxxx单层感知器模型1......jmooo1jmWWW012......inxxxxx2收敛速度变慢,一般取0<η≤1;Step5:p=p+1,如果p≤P,返回到Step2,否则转到Step6;Step6:如果感知器对所有样本的实际输出与期望输出相等,则停止;否则设置p=1,返回Step2。四、实验步骤:

3、1.用单层感知器实现“与”运算“与”运算真值表:x1x2y000010100111得到输入样本和对应的期望输出:X1=[-1,0,0]d1=0X2=[-1,0,1]d2=0X3=[-1,1,0]d3=0X4=[-1,1,1]d4=1(1)打开Matlab双击桌面,打开Matlab主程序(2)建立新文件通过菜单选择FileàNewàM-File或者点击左上角建立一个新文件(3)编程*提示,在Matlab主窗口输入help+空格+命令,可以看到关于该命令使用方法即作用的的具体说明流程:Step1:functionmain()%建立函数,可用其他名字clo

4、seall%关闭所有figurerand('state',sum(100*clock))%随机数种子用时钟进行初始化Step2:设置样本数量P,对输入样本和期望输出赋值设置感知器参数(输入样本维数,输出维数,最大训练次数,学习率%%%%%%%%%%%%%%%%%%%%%%%%%%%3%关于赋值的例程(黑色字体为程序,蓝色字体为Matlab运行结果):a=1;%单值赋值(注意:A与a是两个不同变量)A=2;%分号:只运算不显示逗号或者结尾没有符号:即运算又显示M=[1,2;3,4];%矩阵赋值>>M=[1,2;3,4];>>M,M=1234>>M(1,

5、:)%矩阵的第一行ans=12>>M(:,1)%矩阵的第一列ans=13>>M(:,1)=[00];%可单独操作一列一行或者一个元素(如M(1,1)=0;)>>MM=0204>>Err=[];%Err初始为空Err=[Err1];%加入新的元素Err=[Err2];%再次加入Err=[Err4];%向量的元素可以以这种方式不断增加ErrErr=124%%%%%%%%%%%%%%%%%%%%%%%%%%%Step3:感知器训练权值初始化设置阈值合并阈值与权值得到扩展权值从1到最大迭代次数,不断迭代计算每次均依次输入样本1-4,由op-dp得到误差,计算

6、新的权向量使用单极点二值变换函数10()00xfxxì³=í<î记录下每次调整后的权值每次迭代计算后,计算并记录总误差,如果总误差为0,则停止迭代%%%%%%%%%%%%%%%%%%%%%%%%%%%%关于循环和矩阵运算和其他一些涉及到运算的例程:>>M=[];fori=1:5M=[M;[i,i.^2]];4endMM=112439416525>>M.*M%点乘ans=114169811625625625>>M'%“'”为转置运算ans=123451491625>>M*M'%叉乘,ans=2612203062042721101242901562402

7、07215627242030110240420650>>a=1:5;fori=1:5iifa(i)==3,break,end%如果a(i)=3则跳出循环endi=1i=2i=3>>x=0.1;ifx>=0f=1;5elsef=0;endf,f=1>>x=0.1;f=(x>=0)%逻辑运算f=1>>x=-0.1;f=(x>=0)f=0>>rand(1,5)%产生一个一行5列的随机数矩阵ans=0.15760.97060.95720.48540.8003>>sum([1,2,3])%求和运算ans=6>>abs(-5)%绝对值运算ans=5%%%%%%%

8、%%%%%%%%%%%%%%%%%%%%Step4:显示结果画出收敛曲线,即每次迭代后的总误差画出权值的变化

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。