- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                现代信号处理大型作业
                    2013年现代信号处理大型作业
(选择1,2,3三道题)
一、请用多层感知器(MLP)神经网络误差反向传播(BP)算法实现异或问题输入为,要求可以判别输出0或1)并画出学习曲线。其中,非线性函 数采用S型Logistic函数。“传播”输出层的误差,以间接算出隐层误差。分两个阶段:
正向过程:从输入层经隐层逐层正向计算各单元的输出
反向过程:由输出层误差逐层反向计算隐层各单元的误差,并用此误差修正前层的权值。
2、流程图:
3、程序:
%使用了3层结构,第二层隐藏层4个单元。2,3层都使用Logisitic函数。 
%训练xor数据。                                   
function   mlp()
f= fopen(XOR.txt);
  A = fscanf(f, %g,[3 inf]);  
  A = A; 
  p = A(1:2, :);%训练输入数据
  t = A(3, :);%desire out
  [train_num , input_scale]= size(p) ;%规模
  fclose(f);  accumulate_error=zeros(1,3001);
  alpha  = 0.5;%学习率
  threshold = 0.005;%  收敛条件 ∑e^2  threshold
  wd1=0;  wd2=0; 
  bd1=0;  bd2=0;  	
  circle_time =0;
  hidden_unitnum = 4; %隐藏层的单元数
  w1 = rand(hidden_unitnum,2);%4个神经元,每个神经元接受2个输入
  w2 = rand(1,hidden_unitnum);%一个神经元,每个神经元接受4个输入
  b1 = rand(hidden_unitnum,1);
  b2 = rand(1,1);
while 1
      temp=0;
      circle_time = circle_time +1;
      for i=1:train_num
        %前向传播
        a0 = double ( p(i,:)  );%第i行数据
        n1 = w1*a0+b1;
        a1 = Logistic(n1);%第一个的输出
        n2 = w2*a1+b2;
        a2 = Logistic(n2);%第二个的输出
        a = a2;
        %后向传播敏感性
        e = t(i,:)-a;
        accumulate_error(circle_time) = temp + abs(e)^2;
        temp=accumulate_error(circle_time);                 
        s2 = F(a2)*e; 	  %输出层delta值    
        s1 = F(a1)*w2*s2;%隐层delta值
        %修改权值
        wd1 = alpha .* s1*a0;
        wd2 = alpha .* s2*a1;
        w1 =  w1 + wd1;
        w2 =  w2 + wd2;
        bd1 = alpha .* s1;
        bd2 = alpha .* s2;
        b1 = b1 + bd1;
        b2 = b2 + bd2;        
    end;%end of for
    if accumulate_error(circle_time) = threshold| circle_time3001  %then       break;
    end;%end of if
  end;%end of while
  plot(accumulate_error,m);
  grid;
  xlabel(学习次数)
  ylabel(误差)
disp([计算误差 = ,num2str(accumulate_error(circle_time))] )	;
disp([迭代次数 = ,num2str(circle_time)]);
%测试
a0 = double ([0 0]);
n1 = w1*a0+b1;
a1 = Logistic(n1);
n2 = w2*a1+b2;
a2 = Logistic(n2);
a = a2;
disp([0 0 = ,num2str(a)]);
a0 = double ([0 1]);
n
                您可能关注的文档
最近下载
- 无菌药品生产课件PPT.pptx VIP
 - 珠玑古巷 (1)讲解.ppt VIP
 - 信息技术-通信行业行业深度报告:太空算力:打破传统地天观,重构天基智能版图.docx VIP
 - DB1407_T 53-2024 质量基础设施“一站式”服务指南.pdf VIP
 - 通信行业的室分工程实施方案(3篇).docx VIP
 - 自动化生产线安装与调试试卷及答案.docx VIP
 - 1501-幼儿教育专业国家技能人才培养工学一体化课程标准(试用).docx VIP
 - (新版)增材制造设备操作员技能理论考试复习题库(含答案).docx VIP
 - 法务工作中的AI应用:如何在提升效率的同时保障合规并赢得领导认可?.doc VIP
 - HYSYS笔记.docx VIP
 
原创力文档
                        

文档评论(0)