感知器神经网络
一、感知器定义
感知器是一种前馈人工神经网络,是人工神经网络中的一种典型结构。感知器具有分层
结构,信息从输入层进入网络,逐层向前传递至输出层。根据感知器神经元变换函数、隐层
数以及权值调整规则的不同,可以形成具有各种功能特点的人工神经网络
二、感知器模型
三、相关代码的实现
1.感知器神经网络的构建
% 1. 感知器神经网络的构建
% 1.1 生成网络
net=newp([0 2],1);%单输入,输入值为[0,2]之间的数
inputweights=net.inputweights{1,1};%第一层的权重为1
biases=net.biases{1};%阈值为1
newp函数用来创建一个感知器,感知器层数为1。
% 1.2 网络仿真
net=newp([-2 2;-2 2],1);%两个输入,一个神经元,默认二值激活
net.IW{1,1}=[-1 1];%权重,net.IW{i,j}表示第i层网络第j个神经元的权重向量
net.IW{1,1}
net.b{1}=1;
net.b{1}
p1=[1;1],a1=sim(net,p1)
p2=[1;-1],a2=sim(net,p2)
p3={[1;1] [1 ;-1]},a3=sim(net,p3) %两组数据放一起
p4=[1 1;1 -1],a4=sim(net,p4)%也可以放在矩阵里面
net.IW{1,1}=[3,4];
net.b{1}=[1];
a1=sim(net,p1)
sim为仿真函数,可对模型进行仿真。sim函数中的net代表训练好的网络,第二个元素p1、p2、p3代表网络的输入。
此时结果为:
ans =
-1 1
ans =
1
p1 =
1
1
a1 =
1
p2 =
1
-1
a2 =
0
p3 =
1×2 cell 数组
{2×1 double} {2×1 double}
a3 =
1×2 cell 数组
{[1]} {[0]}
p4 =
1 1
1 -1
a4 =
1 0
a1 =
1
% 1.3 网络初始化
net=init(net);
wts=net.IW{1,1}
bias=net.b{1}
% 改变权值和阈值为随机数
net.inputweights{1,1}.initFcn='rands';
net.biases{1}.initFcn='rands';
net=init(net);
bias=net.b{1}
wts=net.IW{1,1}
a1=sim(net,p1)
init为神经网络初始化函数。
输出结果为:
wts =
0 0
bias =
0
bias =
0.6294
wts =
0.8116 -0.7460
a1 =
1
2.感知器神经网络的学习和训练
% 2. 感知器神经网络的学习和训练
% 1 网络学习
net=newp([-2 2;-2 2],1);
net.b{1}=[0];
w=[1 -0.8]
net.IW{1,1}=w;
p=[1;2];
t=[1];
a=sim(net,p)
e=t-a
help learnp
dw=learnp(w,p,[],[],[],[],e,[],[],[],[],[])
w=w+dw
net.IW{1,1}=w;
a=sim(net,p)
net = newp([0 1; -2 2],1);
P = [0 0 1 1; 0 1 0 1];
T = [0 1 1 1];
Y = sim(net,P)
net.trainParam.epochs = 20;
net = train(net,P,T);
Y = sim(net,P)
train函数,根据网络、输入、目标输出,训练网络得到输出
learnp为学习函数
输出结果为:
w =
1.0000 -0.8000
a =
0
e =
1
dw =
1 2
w =
2.0000 1.2000
a =
1
Y =
1 1 1 1
Y =
0 1 1 1
% 2 网络训练
net=init(net);
p1=[2;2];t1=0;p2=[1;-2];t2=1;p3=[-2;2];t3=0;p4=[-1;1];t4=1;