单层感知器.docx
《单层感知器.docx》由会员分享,可在线阅读,更多相关《单层感知器.docx(13页珍藏版)》请在冰豆网上搜索。
单层感知器
单层感知器
一、与运算
1.程序
functionmain()
closeall
rand('state',sum(100*clock));
X=[-1,0,0;-1,0,1;-1,1,0;-1,1,1];D=[0,0,0,1];q=1;W=[0.1,rand(1,2)];
O=[0,0,0,0];ERROR=[];R2=[0,0,0,1];t=1;
forj=1:
100
forp=1:
4
ifW(t,:
)*X(p,:
)'>0
O(1,p)=1;
else
O(1,p)=0;
end
R2(1,p)=D(1,p)-O(1,p)
M=W(t,:
)+q*R2(1,p)*X(p,:
)
W=[W;M]
ifabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0,break,end
t=t+1
end
ERROR=[ERRORR2(1,1)+R2(1,2)+R2(1,3)+R2(1,4)]
ifabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0,break,end
end
fori=1:
3
figure
holdon
gridon
x=1:
t
y=W(x,i)
plot(x,y,'b--');
ylabel('w')
end
figure
holdon
gridon
fori=1:
4
x=X(i,2)
y=X(i,3)
plot(x,y,'*')
end
axis([-12-12])
a=0:
1
b=[W(t,1)-W(t,2)*a]/W(t,3)
plot(a,b,'b--')
figure
holdon
gridon
x=1:
j
y=ERROR(1,x);
plot(x,y,'b--')
end
2.训练结果
最终误差:
0
迭代次数:
8
最终权值:
2.64161.3022
最终阈值:
3.1000
误差收敛曲线
权值变化曲线
W1变化曲线
W2变化曲线
3样本分布及分界线
阈值=0.1时平均迭代次数
学习率
0.01
0.05
0.1
0.5
1
2
10
迭代次数
24.4
5.7
4.4
4.8
6.2
6.8
7.8
学习率=0.1时平均迭代次数
阈值
0.01
0.05
0.1
0.5
1
2
10
迭代次数
4.8
4.1
5.1
3.1
2.4
5.2
31.5
阈值=0.1学习率=0.1
变换函数
单极点二值函数
单极点Sigmoid 函数
迭代次数
4.8
1691.9
二或运算
1编程
functionmain()
closeall
rand('state',sum(100*clock));
X=[-1,0,0;-1,0,1;-1,1,0;-1,1,1];
D=[0,1,1,1];q=0.1;
W=[0.1,rand(1,2)];
O=[0,0,0,0];
ERROR=[];R2=[0,0,0,1];
t=1;
forj=1:
1000
forp=1:
4
ifW(t,:
)*X(p,:
)'>0
O(1,p)=1;
else
O(1,p)=0;
end
R2(1,p)=D(1,p)-O(1,p)
M=W(t,:
)+q*R2(1,p)*X(p,:
)
W=[W;M]
ifabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0,break,end
t=t+1
end
ERROR=[ERRORabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))]
ifabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0,break,end
end
fori=1:
3
figure
holdon
gridon
x=1:
t
y=W(x,i)
plot(x,y,'b--');
ylabel('w')
end
figure
holdon
gridon
fori=1:
4
x=X(i,2)
y=X(i,3)
plot(x,y,'*')
end
axis([-12-12])
a=0:
1
b=[W(t,1)-W(t,2)*a]/W(t,3)
plot(a,b,'b--')
figure
holdon
gridon
x=1:
j
y=ERROR(1,x);
plot(x,y,'b--')
end
2.训练结果
误差收敛曲线
权值变化曲线
W1变化曲线
W2变化曲线
3样本分布及分界线
三异或
1编程
functionmain()
closeall
rand('state',sum(100*clock));
X=[-1,0,0;-1,0,1;-1,1,0;-1,1,1];
D=[0,1,1,0];q=1;
W=[0.1,rand(1,2)];
O=[0,0,0,0];
ERROR=[];R2=[0,0,0,1];
t=1;
forj=1:
20
forp=1:
4
ifW(t,:
)*X(p,:
)'>0
O(1,p)=1;
else
O(1,p)=0;
end
R2(1,p)=D(1,p)-O(1,p);
M=W(t,:
)+q*R2(1,p)*X(p,:
);
W=[W;M];
ifabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==4,break,end
t=t+1;
end
ERROR=[ERRORabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))];
ifabs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==4,break,end
end
j
ERROR
fori=1:
3
figure
holdon
gridon
x=1:
t;
y=W(x,i);
plot(x,y,'b--');
ylabel('w')
end
figure
holdon
gridon
fori=1:
4
x=X(i,2);
y=X(i,3);
plot(x,y,'*')
end
axis([-12-12])
a=0:
1;
b=[W(t,1)-W(t,2)*a]/W(t,3);
plot(a,b,'b--')
figure
holdon
gridon
x=1:
j;
y=ERROR(1,x);
plot(x,y,'b--')
end
2.训练结果
最终误差=4
误差收敛曲线
权值变化曲线
W1变化曲线
W2变化曲线