神经网络的MATLAB实现苏析超_第1页
神经网络的MATLAB实现苏析超_第2页
神经网络的MATLAB实现苏析超_第3页
神经网络的MATLAB实现苏析超_第4页
神经网络的MATLAB实现苏析超_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

神经网络的MATLAB实现苏析超第1页/共24页BP神经网络通常是指基于误差反向传播算法(BP算法)的多层前向神经网络。该网络的主要特点是信号向前传递,误差反向传播。向前传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响到下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。1.BP神经网络原理神经网络的MATLAB实现第2页/共24页神经网络的MATLAB实现第3页/共24页神经网络的MATLAB实现第4页/共24页神经网络的MATLAB实现%%清空环境变量clcclear%%训练数据预测数据提取及归一化%下载四类语音信号loaddata1c1loaddata2c2loaddata3c3loaddata4c4%从1到2000间随机排序k=rand(1,2000);[m,n]=sort(k);%输入输出数据input=data(:,2:25);output1=data(:,1);%四个特征信号矩阵合成一个矩阵data(1:500,:)=c1(1:500,:);data(501:1000,:)=c2(1:500,:);data(1001:1500,:)=c3(1:500,:);data(1501:2000,:)=c4(1:500,:);第5页/共24页神经网络的MATLAB实现%随机提取1500个样本为训练样本,500个样本为预测样本input_train=input(n(1:1500),:)';output_train=output(n(1:1500),:)';input_test=input(n(1501:2000),:)';output_test=output(n(1501:2000),:)';%输入数据归一化[inputn,inputps]=mapminmax(input_train);第6页/共24页神经网络的MATLAB实现%%网络结构初始化innum=24;midnum=25;outnum=4;

%权值初始化w1=rands(midnum,innum);b1=rands(midnum,1);w2=rands(midnum,outnum);b2=rands(outnum,1);w2_1=w2;w2_2=w2_1;w1_1=w1;w1_2=w1_1;b1_1=b1;b1_2=b1_1;b2_1=b2;b2_2=b2_1;%学习率xite=0.1;%alfa=0.01;第7页/共24页神经网络的MATLAB实现%%网络训练forii=1:10E(ii)=0;fori=1:1:1500%%网络预测输出x=inputn(:,i);%隐含层输出forj=1:1:midnumI(j)=inputn(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));end%输出层输出yn=w2'*Iout'+b2;

第8页/共24页神经网络的MATLAB实现

%%权值阀值修正%计算误差e=output_train(:,i)-yn;E(ii)=E(ii)+sum(abs(e));

%计算权值变化率dw2=e*Iout;db2=e';第9页/共24页神经网络的MATLAB实现forj=1:1:midnumS=1/(1+exp(-I(j)));FI(j)=S*(1-S);endfork=1:1:innumforj=1:1:midnumdw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));endend第10页/共24页神经网络的MATLAB实现

w1=w1_1+xite*dw1';b1=b1_1+xite*db1';w2=w2_1+xite*dw2';b2=b2_1+xite*db2';

w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;b1_2=b1_1;b1_1=b1;b2_2=b2_1;b2_1=b2;endend第11页/共24页神经网络的MATLAB实现%%语音特征信号分类inputn_test=mapminmax('apply',input_test,inputps);forii=1:1fori=1:500%1500%隐含层输出forj=1:1:midnumI(j)=inputn_test(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));end

fore(:,i)=w2'*Iout'+b2;endend第12页/共24页神经网络的MATLAB实现%%结果分析

%根据网络输出找出数据属于哪类fori=1:500output_fore(i)=find(fore(:,i)==max(fore(:,i)));end%BP网络预测误差error=output_fore-output1(n(1501:2000))';%画出预测语音种类和实际语音种类的分类图figure(1)plot(output_fore,'r')holdonplot(output1(n(1501:2000))','b')legend('预测语音类别','实际语音类别')第13页/共24页神经网络的MATLAB实现%画出误差图figure(2)plot(error)title('BP网络分类误差','fontsize',12)xlabel('语音信号','fontsize',12)ylabel('分类误差','fontsize',12)第14页/共24页神经网络的MATLAB实现k=zeros(1,4);%找出判断错误的分类属于哪一类fori=1:500iferror(i)~=0[b,c]=max(output_test(:,i));switchccase1k(1)=k(1)+1;case2k(2)=k(2)+1;case3k(3)=k(3)+1;case4k(4)=k(4)+1;endendend第15页/共24页神经网络的MATLAB实现%找出每类的个体和kk=zeros(1,4);fori=1:500[b,c]=max(output_test(:,i));switchccase1kk(1)=kk(1)+1;case2kk(2)=kk(2)+1;case3kk(3)=kk(3)+1;case4kk(4)=kk(4)+1;endend%正确率rightridio=(kk-k)./kk第16页/共24页newff函数newff用来生成一个BP网络net=newff(PR,[S1S2...SN],{TF1TF2...TFN},BTF,BLF,PF)PR:一个R×2矩阵,由R维输入向量的每维最小值和最大值组成Si:第i层的神经元个数TFi:第i层的传递函数,默认为tansigBTF:训练函数,默认为trainlmBLF:学习函数,默认为learngdmPF:性能函数,默认为msenet=newff([0,10;-1,2],[5,1],{‘tansig’,’purelin’},’trainlm’);

%生成一个两层BP网络,隐层和输出层神经的个数为5和1,传递函数分别为tansig和purelin,训练函数为trainlm,其他默认BP神经网络工具箱第17页/共24页学习算法适用问题类型收敛性能占用存储空间其他特点trainlm函数拟合收敛快,误差小大性能随网络规模增大而变差trainrp模式分类收敛最快较小性能随网络训练误差减小而变差trainscg函数拟合模式分类收敛较快性能稳定中等尤其适用于网络规模较大的情况trainbfg函数拟合收敛较快较大计算量岁网络规模的增大呈几何增长traingdx模式分类收敛较慢较小适用于提前停止的方法MATLAB神经网络工具箱对常规BP算法进行改进,提供了一系列快速算法,以满足不同问题的需要BP神经网络工具箱第18页/共24页利用已知的”输入—目标”样本向量数据对网络进行训练,采用train函数来完成.训练之前,对训练参数进行设置训练参数参数含义默认值net.trainParam.epochs训练步数100net.trainParam.show显示训练结果的间隔步数25net.trainParam.goal训练目标误差0net.trainParam.time训练允许时间INfnet.trainParam.lr学习率0.01net=train(net,P,T)BP神经网络工具箱第19页/共24页网络层数已经证明,单隐层的BP网络可以实现任意非线性映射.BP网络的隐层数一般不超过两层.输入层的节点数输入层接收外部的输入数据,节点数取决于输入向量的维数输出层的节点数输出层的节点数取决于输出数据类型和该类型所需的数据大小.对于模式分类问题,节点数为BP神经网络工具箱第20页/共24页隐层的节点数隐层的节点数与求解问题的要求,输入输出单元数多少有关.对于模式识别/分类的节点数可按下列公式设计传递函数隐层传递函数采用S型函数,输出层采用S型函数或线性函数训练方法及其参数选择针对不同应用,BP网络提供了多种训练学习方法.其中为隐层节点数,为输入节点数,为1~10之间的整数BP神经网络工具箱第21页/共24页采用动量梯度下降算法训练BP网络.训练样本%定义训练样本p=[-1-131;-115-3];t=[-1-111];%创建一个新的BP网络net=newff(minmax(p),[31],{'tansig','purelin'},'traingdm');%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论