人工神经网络1.docx
- 文档编号:9755569
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:23
- 大小:156.27KB
人工神经网络1.docx
《人工神经网络1.docx》由会员分享,可在线阅读,更多相关《人工神经网络1.docx(23页珍藏版)》请在冰豆网上搜索。
人工神经网络1
人工神经网络——BP网络
1.BP神经网络逼近函数
步骤1:
假设频率参数k=1,绘制要逼近的非线性函数的曲线。
函数的曲线如图1所示
k=1;
p=[-1:
.05:
8];
t=1+sin(k*pi/4*p);
plot(p,t)
title('要逼近的非线性函数');
xlabel('时间');
ylabel('非线性函数');
图1要逼近的非线性函数曲线
步骤2:
网络的建立
应用newff()函数建立BP网络结构。
隐层神经元数目n可以改变,暂设为n=3,输出层有一个神经元。
选择隐层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练的算法采用Levenberg–Marquardt算法trainlm。
n=3;
net=newff(minmax(p),[n,1],{'tansig''purelin'},'trainlm');
对于初始网络,可以应用sim()函数观察网络输出
y1=sim(net,p);
figure;
plot(p,t,'-',p,y1,':
')
title('未训练网络的输出结果');
xlabel('时间');
ylabel('仿真输出--原函数-');
同时绘制网络输出曲线,并与原函数相比较,结果如图2所示。
图2未训练网络的输出结果
其中“”代表要逼近的非线性函数曲线;
“‥‥‥”代表未经训练的函数曲线;
因为使用newff()函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也有时不同。
步骤3:
网络训练
应用train()函数对网络进行训练之前,需要预先设置网络训练参数。
将训练时间设置为50,训练精度设置为0.01,其余参数使用缺省值。
训练后得到的误差变化过程如图3所示。
图3
net.trainParam.epochs=50;%网络训练步骤设置为50
net.trainParam.goal=0.01;%网络训练精度设置为0.01
net=train(net,p,t);%开始训练网络
TRAINLM,Epoch0/50,MSE2.26463/0.01,Gradient364.666/1e-010
TRAINLM,Epoch9/50,MSE0.0096751/0.01,Gradient16.4769/1e-010
TRAINLM,Performancegoalmet.
从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。
步骤4:
网络测试
对于训练好的网络进行仿真:
y2=sim(net,p);
figure;
plot(p,t,'-',p,y1,':
',p,y2,'--')
title('训练后网络的输出结果');
xlabel('时间');
ylabel('仿真输出');
绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图4所示。
图4训练后网络的输出结果
其中“”代表要逼近的非线性函数曲线;
“‥‥‥”代表未经训练的函数曲线;
“―――”代表经过训练的函数曲线;
从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。
这说明经过训练后,BP网络对非线性函数的逼近效果比较好。
不同频率下的逼近效果
改变非线性函数的频率和BP函数隐层神经元的数目,对于函数逼近的效果有一定的影响。
网络非线性程度越高,对于BP网络的要求越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果也有一定影响,一般来说隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。
下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明。
(1)频率参数设为k=1,当隐层神经元数目分别取n=3、n=6、n=8,时得到了训练后的网络输出结果如图5、6、7所示。
图5当n=3时训练后网络的输出结果
图6当n=6时训练后网络的输出结果
图7当n=8时训练后网络的输出结果
其中“”代表要逼近的非线性函数曲线;
“‥‥‥”代表未经训练的函数曲线;
“―――”代表经过训练的函数曲线;
(2)频率参数设为k=2,当隐层神经元数目分别取n=3、n=6、n=8时,得到了训练后的网络输出结果如图8、9、10所示。
图8当n=3时训练后网络的输出结果
图9当n=6时训练后网络的输出结果
图10当n=8时训练后网络的输出结果
其中“”代表要逼近的非线性函数曲线;
“‥‥‥”代表未经训练的函数曲线;
“―――”代表经过训练的函数曲线;
(3)频率参数设为k=4,当隐层神经元数目分别取n=3、n=6、n=8时,得到了训练后的网络输出结果如图11、12、13所示。
图11当n=3时训练后网络的输出结果
图12当n=6时训练后网络的输出结果
图13当n=8时训练后网络的输出结果
其中“”代表要逼近的非线性函数曲线;
“‥‥‥”代表未经训练的函数曲线;
“―――”代表经过训练的函数曲线;
结论
通过上述仿真结果可知,当k=1,n=3时;k=2,n=8时;k=4,n=8时;BP神经网络分别对函数取得了较好的逼近效果。
由此可见,n取不同的值对函数逼近的效果有很大的影响。
改变BP网络隐层神经元的数目,可以改变BP神经网络对于函数的逼近效果。
隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。
1、或门的实现:
1)>>net=newp([01;-22],1);
P=[0011;0101];
T=[0111];
net=init(net);
Y1=sim(net,P)
net.trainParam.epochs=25;
net=train(net,P,T);
Y=sim(net,P)
输出结果:
Y1=
1111
Y=
0111
Matlab中运行结果图
2、与门的实现
1)>>net=newp([01;-22],1);
P=[0011;0101];
T=[0001];
net=init(net);
Y1=sim(net,P)
net.trainParam.epochs=20;
net=train(net,P,T);
Y=sim(net,P)
Y1=
1111
Y=
0001
Matlab中运行结果图
3、异或问题的实现
>>%Perceptrons_02
%用两层感知器实现异或
%第一层是随机层,即权重何偏差随机确定,以第一层的输出作为第二层的输入
pr1=[01;01];%随机感知器输入的范围
net1=newp(pr1,3);
net1.inputweights{1}.initFcn='rands';
net1.biases{1}.initFcn='rands';
index=0;
whileindex==0
net1=init(net1);
iw1=net1.IW{1}
b1=net1.b{1}
p1=[0011;0101];
[a1,pr]=sim(net1,p1);
pr2=[01;01;01];
net2=newp(pr2,1);
net2.trainParam.epochs=10;
net2.trainParam.show=1;
%p2=a1;%最好不要直接赋值,可能a2=sim(net2,p2)不能正常运行
p2=ones(size(a1));
p2=p2.*a1;
t2=[0110];
[net2,tr2]=train(net2,p2,t2);
epoch2=tr2.epoch
perf2=tr2.perf
iw2=net2.IW{1}
b2=net2.b{1}
a2=sim(net2,p2)
savePercept02net1net2
ifa2==t2
index=1;
end
end
输出结果:
iw1=
-0.8379-0.3614
0.7022-0.2502
0.12410.7356
b1=
0.6954
-0.5815
-0.0898
epoch2=
012345678
perf2=
0.50000.75000.50000.75000.50001.00000.75000.50000
iw2=
221
b2=
-3
a2=
0110
4、使用感知器将二维的四组输入矢量分成两类
P=[-0.5-0.5+0.3-0.1+0.20.0+0.6+0.8;
-0.5+0.5-0.5+1.0+0.5-0.9+0.8-0.6];
T=[11011010];
plotpv(P,T);
net=newp([-11;-11],1);
watchon;
cla;
plotpv(P,T);
linehandle=plotpc(net.IW{1},net.b{1});
E=1;
net=init(net);
linehandle=plotpc(net.IW{1},net.b{1});
while(sse(E))
[net,Y,E]=adapt(net,P,T);
linehandle=plotpc(net.IW{1},net.b{1},linehandle);
drawnow;
end;
pause
watchoff;
2、0-9数字的识别
%建立样本库
%输入源样本1,2,3,4为不同字体数字
clearall
forpcolum=0:
39
p1=ones(30,30);%建立全为1的样本矩阵
m=strcat('E:
\MATLAB7\work\123\sjwl\num\',int2str(pcolum),'.jpg');
I=imread(m);%循环读入0-39个样本数字文件
I1=im2bw(I,0.3);%对输入图像进行二值化处理采用全局阈值0.3
[m,n]=find(I1==0);
rowmin=min(m);
rowmax=max(m);
colummin=min(n);
colummax=max(n);
I2=I1(rowmin:
rowmax,colummin:
colummax);%截取是入图像中的数字部分
rate=30/max(size(I2));
I3=imresize(I2,rate);%对输入文件变尺寸处理
[i,j]=size(I3);
row=round((30-i)/2);
colum=round((30-j)/2);
p1(row+1:
row+i,colum+1:
colum+j)=I3;%建立起30*30的矩阵
p1=-1*p1+ones(30,30);%反色处理
forhh=1:
30
p((hh-1)*30+1:
(hh-1)*30+30,pcolum+1)=p1(hh,1:
30);
end%将处理的源样本输入供神经网络训练的样本pcolum是样本数循环变量
switchpcolum
case{0,10,20,30}
t(pcolum+1)=0%数字0
case{1,11,21,31}
t(pcolum+1)=1%数字1
case{2,12,22,32}
t(pcolum+1)=2%数字2
case{3,13,23,33}
t(pcolum+1)=3%数字3
case{4,14,24,34}
t(pcolum+1)=4%数字4
case{5,15,25,35}
t(pcolum+1)=5%数字5
case{6,16,26,36}
t(pcolum+1)=6%数字6
case{7,17,27,37}
t(pcolum+1)=7%数字7
case{8,18,28,38}
t(pcolum+1)=8%数字8
case{9,19,29,39}
t(pcolum+1)=9%数字9
end%建立与训练样本对应的输出值t
end
save51ETpt;
%训练网络
clearall
load51ETpt;%加载样本
pr(1:
900,1)=0;
pr(1:
900,2)=1;
net=newff(pr,[251],{'logsig''purelin'},'traingdx','learngdm');%创建BP网络
net.trainParam.epochs=3000;%设置训练步数
net.trainParam.goal=0.000000001;%设置训练目标
net.trainParam.show=10;%设置训练显示格数
net.trainParam.lr=0.05%设置训练学习率
net=train(net,p,t);%训练BP网络
saveET51netnet;
%使用网络
clearall
m=input('请输入测试样本(E:
\MATLAB7\work\123\sjwl\try\):
');
I=strcat('E:
\MATLAB7\work\123\sjwl\try\',int2str(m),'.jpg');
U=imread(I);
imview(U);%通过键盘输入添加试验样本
loadET51netnet;%加载以训练好的BP神经网络
p=zeros(900,1);%建立输入样本的空矩阵
p1=ones(30,30);%建立临时存放样本的30*30的矩阵
I1=im2bw(U,0.3);%对输入图像进行二值化处理采用全局阈值0.3
[m,n]=find(I1==0);
rowmin=min(m);
rowmax=max(m);
colummin=min(n);
colummax=max(n);
I2=I1(rowmin:
rowmax,colummin:
colummax);%截取是入图像中的数字部分
rate=30/max(size(I2));
I3=imresize(I2,rate);%对输入文件变尺寸处理
[i,j]=size(I3);
row=round((30-i)/2);
colum=round((30-j)/2);
p1(row+1:
row+i,colum+1:
colum+j)=I3;%建立起30*30的矩阵
p1=-1*p1+ones(30,30);%反色处理
forhh=1:
30
p((hh-1)*30+1:
(hh-1)*30+30,1)=p1(hh,1:
30);
end%将处理的源样本输入供神经网络训练的样本
x=sim(net,p);%测试网络
x=round(x);%输出网络识别结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工 神经网络
![提示](https://static.bdocx.com/images/bang_tan.gif)