使用MATLAB编写单层感知器.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用MATLAB编写单层感知器

采用感知器学习规则,训练步骤如下: Step 1: 对各权值w0j(0), w2j(0), …, wnj(0), j=1, 2, …, m (m 为计算层的节点数)赋予较小的 非零随机数,设置p=1; Step 2: 输入样本对{X p,d p},其中X p = (-1, x1 p, x2 p , …, xn p), d p = (d1 p, d2 p , …, dn p)为期望 的输出向量(教师信号),上标p 表示样本对的模式序号,设样本总数为P,则p = 1, 2, …, P; Step 3: 计算各节点的实际输出 p ( ) sgn( T ( ) p ), 1,2,..., j j o t ? W t X j ? m Step 4: 调整各节点对应的权值, ( 1) ( ) [ p p ( )] p j j j j W t ? ?W t ?? d ? o t X η为学习率,用于控制调整速度,η值太大会影响训练的稳定性,太小则使训练的 1 2 ( , ,..., ..., )T j m 输出层 O ? o o o o 输入层 1 2 ( , ,..., ,..., ) j m W ? W W W W 0 1 2 ( , , ,..., ,..., )T i n X ? x x x x x 单层感知器模型 1 ... ... j m o o o 1 j m W W W 0 1 2 ... ... i n x x x x x 2 收敛速度变慢,一般取0η≤1; Step 5: p=p+1,如果p ≤ P,返回到Step2 ,否则转到Step 6 ; Step 6: 如果感知器对所有样本的实际输出与期望输出相等,则停止;否则设置p=1,返回 Step2。 四、实验步骤: 1. 用单层感知器实现“与”运算 “与”运算真值表: x1 x2 y 0 0 0 0 1 0 1 0 0 1 1 1 得到输入样本和对应的期望输出: X1=[-1, 0, 0] d1=0 X2=[-1, 0, 1] d2=0 X3=[-1, 1, 0] d3=0 X4=[-1, 1, 1] d4=1 (1) 打开Matlab 双击桌面,打开Matlab 主程序 (2) 建立新文件 通过菜单选择 File? New?M-File 或者点击左上角建立一个新文件 (3) 编程 *提示,在Matlab 主窗口输入help+空格+命令,可以看到关于该命令使用方法即 作用的的具体说明 流程: Step1: function main() %建立函数,可用其他名字 close all %关闭所有figure rand(state,sum(100*clock)) %随机数种子用时钟进行初始化 Step 2: 设置样本数量 P,对输入样本和期望输出赋值 设置感知器参数(输入样本维数,输出维数,最大训练次数,学习率 %%%%%%%%%%%%%%%%%%%%%%%%%%% 3 %关于赋值的例程(黑色字体为程序,蓝色字体为Matlab 运行结果): a=1; %单值赋值(注意:A 与a 是两个不同变量) A=2;%分号:只运算不显示逗号或者结尾没有符号:即运算又显示 M=[1,2;3,4]; %矩阵赋值 M=[1,2;3,4]; M, M = 1 2 3 4 M(1,:)%矩阵的第一行 ans = 1 2 M(:,1)%矩阵的第一列 ans = 1 3 M(:,1)=[0 0];%可单独操作一列一行或者一个元素(如M(1,1)=0;) M M = 0 2 0 4 Err=[];%Err 初始为空 Err=[Err 1];%加入新的元素 Err=[Err 2];%再次加入 Err=[Err 4];%向量的元素可以以这种方式不断增加 Err Err = 1 2 4 %%%%%%%%%%%%%%%%%%%%%%%%%%% Step 3:感知器训练 权值初始化 设置阈值 合并阈值与权值得到扩展权值 从 1 到最大迭代次数,不断迭代计算 每次均依次输入样本 1-4,由op-dp 得到误差,计算新的权向量 使用单极点二值变换函数 1 0 ( ) 0 0 x f x x ? ? ? ? ? ? 记录下每次调整后的权值 每次迭代计算后,计算并记录总误差,如果总误差为 0,则停止迭代 %%%%%%%%%%%%%%%%%%%%%%%%%%% %关于循环和矩阵运算和其他一些涉及到运算的例程: M=[]; for i=1:5 M=[M;[i,i.^2]]; 4 end M M = 1 1 2 4 3 9 4 16 5 25 M.*M %点乘 ans = 1 1 4 16 9 81 16 256 25 625 M %“ ”为转置运算 ans = 1 2 3 4 5 1 4 9 16 25

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档