⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 n1.m

📁 感知器神经网络设计举例:将四个输入矢量分为两类
💻 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 + -