📄 n1.m
字号:
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0]; %输入矢量p
t=[1 1 0 0]; %目标分类矢量t
%---------------
[w,b]=initp(p,t); %感知器初始化函数
%----------------
a=simup(p,w,b); %感知器层仿真函数
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%----------------
max_epoch=20; %最大训练次数
for epoch=1:max_epoch
if all(a==t)
disp('It works!')
break
end
e=t-a
[dw,db]=learnp(p,e); %感知器学习规则函数
w=w+dw;
b=b+db;
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%---------------
end
%--------------
plotpv(p,t); %根据目标输出矢量绘制输入矢量图
plotpc(w,b); %加画感知器分类线
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0]; %输入矢量p
t=[1 1 0 0]; %目标分类矢量t
%---------------
[w,b]=initp(p,t); %感知器初始化函数
%----------------
a=simup(p,w,b); %感知器层仿真函数
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%----------------
max_epoch=20; %最大训练次数
for epoch=1:max_epoch
if all(a==t)
disp('It works!')
break
end
e=t-a
[dw,db]=learnp(p,e); %感知器学习规则函数
w=w+dw;
b=b+db;
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%---------------
end
%--------------
plotpv(p,t); %根据目标输出矢量绘制输入矢量图
plotpc(w,b); %加画感知器分类线
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0]; %输入矢量p
t=[1 1 0 0]; %目标分类矢量t
%---------------
[w,b]=initp(p,t); %感知器初始化函数
%----------------
a=simup(p,w,b); %感知器层仿真函数
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%----------------
max_epoch=20; %最大训练次数
for epoch=1:max_epoch
if all(a==t)
disp('It works!')
break
end
e=t-a
[dw,db]=learnp(p,e); %感知器学习规则函数
w=w+dw;
b=b+db;
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%---------------
end
%--------------
plotpv(p,t); %根据目标输出矢量绘制输入矢量图
plotpc(w,b); %加画感知器分类线
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0]; %输入矢量p
t=[1 1 0 0]; %目标分类矢量t
%---------------
[w,b]=initp(p,t); %感知器初始化函数
%----------------
a=simup(p,w,b); %感知器层仿真函数
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%----------------
max_epoch=20; %最大训练次数
for epoch=1:max_epoch
if all(a==t)
disp('It works!')
break
end
e=t-a
[dw,db]=learnp(p,e); %感知器学习规则函数
w=w+dw;
b=b+db;
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b); %也可以用硬限副幅激励函数求输出
%---------------
end
%--------------
plotpv(p,t); %根据目标输出矢量绘制输入矢量图
plotpc(w,b); %加画感知器分类线
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=[-0.5 -0.5 +0.3 +0.0;
-0.5 +0.5 -0.5 +1.0];
t=[1 1 0 0];
%---------------
[w,b]=initp(p,t);
%----------------
tp=[1 20]; %tp(1)---两次显示间的训练次数
%tp(2)---训练的最大次数
[w,b]=trainp(w,b,p,t,tp); %利用感知器规则训练函数
%---------------
a=simup(p,w,b);
%a=hardlim(w*p+b);
%---------------
if all(a==t)
disp('It works!')
end
p=-1:0.1:1 %输入样本
t=[-0.96 -0.58 -0.07 0.38 0.64 0.66 0.46 0.13 -0.20 -0.43...
-0.50 -0.39 -0.17 0.10 0.31 0.40 0.35 0.18 -0.03 -0.22 -0.32] %目标矢量
s1=5;
[w1,b1,w2,b2]=initff(p,s1,'tansig',t,'purelin');
disp_freq=10;
max_epoch=8000;
err_goal=0.02;
lr=0.01;
tp=[disp_freq max_epoch err_goal lr];
[w1,b1,w2,b2,epochs,tr]=trainbpx(w1,b1,'tansig',w2,b2,'purelin',p,t,tp);
% 快速BP网络训练算法函数(采用动量、自适应学习速率)
%tp(1)---两次显示间的训练次数,缺省值为25
%tp(2)---最大训练次数,缺省值为100
%tp(3)---误差平方和,缺省值为0.02
%tp(4)---学习速率,缺省值为0.01
%tp(5)---学习速率增加的比率,缺省值为1.05
%tp(6)---学习速率减少的比率,缺省值为0.7
%tp(7)---动量常数,缺省值为0.9
%tp(8)---最大误差比率,缺省值为0.4
a=simuff(p,w1,b1,'tansig',w2,b2,'purelin');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -