您的当前位置:首页神经网络实验

神经网络实验

2021-06-17 来源:飒榕旅游知识分享网
实验一 单层感知器

一、用单层感知器实现“与”运算(T=0.8,lr=0.1) 1 1、 ○

2、实验程序: function yu() close all;

rand('state',sum(100*clock))%时钟随机初始化 X=[-1 0 0;-1 0 1;-1 1 0;-1 1 1]';%输入样本 z=[0 0;0 1;1 0;1 1] d=[0 0 0 1];%期望输出 h=0.1;%学习率 p=4;%样本数量

epoch=100;%最大训练次数 T=0.8;%阀值

W=rand(1,3);%权值初始化 W(1)=T;

W1=[];%权值W1的变化矩阵 W2=[];%权值W2的变化矩阵 err=[];

k=0;%实际迭代次数 for i=1:epoch

s=0;%每次迭代后的总误差 for j=1:p

net(j)=W*X(:,j); o(j)=(net(j)>=0);

W=W+h*(d(j)-o(j))*X(:,j)';%权值调整 s=s+abs(d(j)-o(j)); end

err=[err s];%误差扩展矩阵 k=k+1;

W1=[W1 W(2)]; W2=[W2 W(3)]; if s==0,break

end%迭代总误差为零时停止迭代 end

figure(1)

subplot(3,1,1) x=1:k;

plot(x,err,'b-') xlabel('迭代次数') ylabel('error') title('误差的收敛曲线') subplot(3,1,2)

plot(x,W1,'r-') xlabel('迭代次数') ylabel('W1')

title('权值W1的变化过程') subplot(3,1,3) plot(x,W2,'y-') xlabel('迭代次数') ylabel('W2')

title('权值W2的变化过程') figure(2) hold on grid on x1=-2:4;

x2=(T-W(1)*x1)/W(2); plot(x1,x2,'b--') xlabel('x1') ylabel('x2 ')

title('样本分布及分界线') x=[0 0 1 1]; y=[0 1 0 1]; plot(x,y,'b*'); z=[z,o'];

display(['The final error is:' num2str(s)]) display(['The epoch is:' num2str(k)])

display(['The final W is:' num2str(W(2)) ' ' num2str(W(3))]) display(['The final T is:' num2str(T)]) display(['the result is:']) display(['x1',' x2',' y']) disp(num2str(z))

3、实验结果: The final error is:0 The epoch is:2

The final W is:0.23583 0.69004

The final T is:0.8 the result is: x1 x2 y 0 0 0 0 1 0 1 0 0 1 1 1

误差的收敛曲线1error0.5011.11.21.31.51.6迭代次数权值W1的变化过程1.41.71.81.922W10-211.11.21.31.51.6迭代次数权值W2的变化过程1.41.71.81.922W20-211.11.21.31.41.51.6迭代次数1.71.81.92

样本分布及分界线108642x2 0-2-4-6-8-10-2-101x1234

2改用连续变换函数后的“与”运算 ○

利用单极点sigmoid函数,将最大循环次数设为1000,将z=[z,o'];变为O=[round(o)]; z=[z,O'];程序其他内容不变。

函数语句:

o(j)=1/(1+exp(-net(j))); epoch=10000; 1、运算结果:

The final error is:0.017121 The epoch is:10000

The final W is:10.2361 10.2355 The final T is:0.8 the result is: x1 x2 y 0 0 0 0 1 0 1 0 0 1 1 1

误差的收敛曲线2error1001000200030004000500060007000迭代次数权值W1的变化过程800090001000020W110001000200030004000500060007000迭代次数权值W2的变化过程800090001000020W21000100020003000400050006000迭代次数70008000900010000

样本分布及分界线43210x2 -1-2-3-4-5-6-2-101x1234

二、用单层感知器实现“或”运算(T=0.8,lr=0.1)

程序除期望输出d变为[0 1 1 1]外其余都不变,程序略。 1、运行结果: The final error is:0 The epoch is:2

The final W is:0.76372 0.67204 The final T is:0.8 the result is: x1 x2 y 0 0 0 0 1 1 1 0 1 1 1 1

误差的收敛曲线2error1011.11.21.31.51.6迭代次数权值W1的变化过程1.41.71.81.922W10-211.11.21.31.51.6迭代次数权值W2的变化过程1.41.71.81.922W20-211.11.21.31.41.51.6迭代次数1.71.81.92样本分布及分界线321x2 0-1-2-3-2-101x1234

三、用单层感知器实现“异或”运算

程序除期望输出d变为[0 1 1 0]外其余都不变,程序略。 最后结果收敛不到误差为0. 1、运行结果: The final error is:4 The epoch is:100

The final W is:-0.13069 -0.051197 The final T is:0.8 the result is: x1 x2 y 0 0 1 0 1 0 1 0 0 1 1 1

误差的收敛曲线4error3201020305060迭代次数权值W1的变化过程407080901000.5W10-0.501020305060迭代次数权值W2的变化过程407080901001W20-10102030405060迭代次数708090100样本分布及分界线20-2x2 -4-6-8-10-2-101x1234

四、回答下列问题: 1)单层感知器的功能 答:

2)单层感知器的局限性

答:仅对线性可分问题具有分类能力

3)使用二值变换函数和连续变换函数对于单层感知器的影响

4)在调试程序中遇到了什么问题,怎样解决的

因篇幅问题不能全部显示,请点此查看更多更全内容