目录
单层传感器的基础理论知识
MATLAB神经网络工具箱使用例程
算法实现
参考文献
单层传感器的基础理论知识
关于单层感知器的理论知识和MATLAB中单层感知器的关联函数,单层感知器——MATLAB神经网络一文有详细的说明。
MATLAB神经网络工具箱使用例程
例:在下图中,o点的输出值为1,*点的输出值为0。 我想要一个输入坐标就能得到对应输出值的神经网络。
根据理论知识,结果为直线(x1*w1 x2*w2 b=0)。 他将平面分割为输出值0和输出值1两个区域。 要使用MATLAB神经网络工具箱求解代码,请执行以下操作:
net=newp([01; 0 )建立1 )、1 ) %单层传感器(NEW Perceptron ),两个输入节点(假设为x1和x2 ),x1的取值范围为0~1,x2,具有0~1,1个节点。
P=[0 0 1 1; 0 1 0 1]); 输入%样品。 这里是2X4的矩阵,矩阵的每列表示采样点
T=[0 1 1 1]; %期望值(输出值),对应输入样本
net.trainParam.epochs=20; %net是已经创建的神经网络,本质上是对象。 如果将trainParam的epochs值更改为20,则最大训练迭代次数为20次
net=train(net,p,t ); %神经网络的训练
%以下是为了理解《单感知器》而可视化的部分,为了解决问题必须是代码
y=sim(net,p ); %针对训练的神经网络仿真(simulate ),将样本值输入神经网络,观察输出结果是否与原始结果一致
b=net.b { 1,1 }; %我们的目的实际上是得到直线(x1*w1 x2*w2 b=0),在这里是取得b值(这是存储在net对象的b参数值中) )。
w1=net.iw { 1,1 } ((1); 获取%w1的值
w2=net.iw { 1,1 } ()2); 获取%w2值
%图
x1=-1:0.1:2;
x2=-w1/w2*x1-b;
plot(x1,x2,' k ' ) ) ) )。
霍尔德on
plot(p ) 1,2: end )、p ) 2,2: end )、' ko ' );
plot(p ) 1,1 )、p ) 2,1 )、' r* ' );
axis ([-1,2,- 1,2 ]
legend (“分类直线”、“值1”、“值0”)
结果如下
对神经网络进行了测试,过程如下(准确性可以从上图中观察到)。
sim(net,[0.1; 0.1 ) )
ans=
0
sim(net,[0.5; 0.5 ) )
ans=
1
算法实现
单层传感器- -根据MATLAB神经网络文中的“二、学习算法步骤”,上述问题可以通过算法步骤,用以下MATLAB码实现: (不使用MATLAB神经网络工具箱)。
n=0.2; %学习率
w=[ 0,0,0 ];
P=[0 0 1 1; 0 1 0 1]);
d=[0 1 1 1]; %期待输出
p=[ ones (1,4 ); P];
MAX=20; %最大迭代次数为20次
i=0;
while 1
v=w*P;
x2=hardlim(v ); %实际输出
%更新
e=(d-x2 );
EE(I1 )=mae(e ) e;
if(EE ) I1 ) 0.001 ) %判断
DISP(wehavegotit: );
DISP(w;
布雷克;
结束
更新%权重和偏移
w=wn*(d-x2 ) p ';
if(I=max ) %达到最大迭代次数并结束
最大快照(disp );
DISP(w;
DISP(ee ) I1 );
布雷克;
结束
i=i 1;
结束
图形;
subplot (2,1,1 ); %显示要分类的点和分类结果
plot(p ) 2,2: end ),p ) 3,2: end ),' ko ' );
霍尔德on
plot(p ) 2,1 )、p ) 3,1 )、' r* ' );
axis ([-1,2,- 1,2 ]
x1=-1:1:2;
x2=x1*(-w(2)/w )3)-w )1)/w ) 3;
plot(x1,x2 );
legend (值1 )、值0 )、分类直线);
霍尔德关闭
subplot (2,1,2 ); %表示mae值的变化
x1=0:i;
plot(x1,ee,' o-';
s=sprintf(Mae的值)重复次数:%d )、i 1 );
是title(s )
参考文献
bmdhxc.MATLAB神经网络原理及实例阐明