Matlab神经网络工具箱2010-7-21今天学的是BP神经网络,首先看的是一个关于非线性函数逼近的例子,最后得出一个心得:在使用newff函数生成一个新的网络时,神经元的层数和每一层的神经元数会对结果造成不小的影响,一般都采用[n,1]的建立方法,其中n为隐层的神经元数,1为输出层的神经元数。然后是做了一个识别系统,算是一个较大的神经网络,具体的代码解释和分析如下:[alphabet,targets]=prprob;[R,Q]=size(alphabet;[S2,Q]=size(targets;S1=10;[R,Q]=size(alphabet;[S2,Q]=size(targets;P==newff(minmax(P,[S1,S2],{'logsig','logsig'},'traingdx';{2,1}={2,1}*0..b{2}={2}+;其中的proprob是matlab自带的一个生成字母表布尔值的函数。可以具体查看。T=.='sse';=0..=.=.=;[net,tr]=,P,==300;T=[targetstargetstargetstargets];forpass=1:10P=[alphabet,alphabet,(alphabet+randn(R,Q*,(alphabet+randn(R,Q*];[netn,tr]=,P,T;end接下来是有噪声训练,采用随机数生成影响输入矩阵的方式。这里收敛的有点慢,===5;P=alphabet;T=targets;[net,tr]=n,P,T接下来还进行无噪声训练,可能是前面的逼近情况已经很了理想了,这里只用了0次循环。。。。。。noise_range=0:.05:.5;%标准差范围max_test=100;%work1=[];network2=[];T=targets;fornoiselevel=noise_rangeerrors1=0;errors2=0;fori=1:max_testP=alphabet+randn(35,26*noiselevel;A=,P;pet(A;errors1=errors1+sum(sum(abs(AA-T/2;An=n,P;pet(An;errors2=errors2+sum(sum(abs(AAn-T/2;work1=[network1errors1/26/100];network2=[network2errors2/26/100];endplot(work1*100,'--',work2*100;plot(work1*100,'--',work2*100,'+';title('识别误差';xlabel('噪声指标';ylabel('不同的训练方式';legend('无噪声训练','有噪声训练';以上是对系统性能的分析。pet函数从help上来更像是一个滤波函数,而sum函数则是用来求一个多维矩阵中各行列的和值。noisyJ=alphabet(:,1+randn(35,1*;plotchar(noisyJ;A2=,noisyJ;pet(A2;answer=pet(A2==1;plotchar(alphabet(:,answer;这里面plotchar函数就是将布尔值向量转变成具体的字母图形,下上代码是对具体的情况进行识别。noisyJ=alphabet(:,10+randn(35,1*;subplot(1,2,1;plotchar(noisyJA2=,noisyJ;pet(A2;answer=pet(A2==1;subplot(1,2,2;plotchar(alphabet(:,answer;这段代码暴露了系统还不太成熟的一面noisyJ=alphabet(:,23+randn(35,1*;subplot(1,2,1;plotchar(noisyJ;A2=,noisyJ;pet(A2;answer=pet(A2==1;subplot(1,2,2;plotchar(alphabet(:,answer;同上,这也是一种识别出错的情况。noisyJ=alphabet(:,4;subplot(1,2,1;plotchar(noisyJ;A2=,noisyJ;pet(A2;answer=pet(A2==1;subplot(1,2,2;plotchar(
matlab神经网络 来自淘豆网m.daumloan.com转载请标明出处.