神经网络学习笔记--基于matlab的感知器

详细理论可参考https://blog.csdn.net/fieldoffier/article/details/44264715 

本文仅提供实例和经验。

题目:已知向量P=[-0.5 -0.5 0.3 -0.1 -4; -0.5 0.5 -0.5 1.0 5];T=[1 1 0 0 1]; 求Q=[0.7 -0.5;1.2 -0.5]

解读:对Q向量进行分类,由已知的P和T训练一个感知器。有监督的学习,单层神经网络。

第一步:观察P,确定范围。x1∈[-4,1];x2∈[-1,5]。Q也在次范围内。

第二步:创建一个感知器,使用函数newp,第一个参数为范围;第二个参数为个数,本次使用一个感知器;第三、四个参数可选;学习函数选用'learnpn',原因:P的范围差距较大。

第三步:训练网络,使用train(),传入P,T。

第四步:网络仿真,获取结果。sim()。

第五步,画图。

源代码如下:

P = [-0.5 -0.5 0.3 -0.1 -4; -0.5 0.5 -0.5 1.0 5];   %输入向量
T = [1 1 0 0 1];            %输出向量
net=newp([-4 1;-1 5],1,'hardlim','learnpn');    %创建一个感知器
net.trainParam.epochs=10;   %最大训练次数
net=train(net,P,T);      %开始训练
Q=[0.7 -0.5;1.2 -0.5];     %测试向量
Y=sim(net,Q)    %网络仿真,获得结果
figure
plotpv(P,T)
plotpc(net.iw{1},net.b{1})
figure
plotpv(Q,Y)
plotpc(net.iw{1},net.b{1})

调试:发现当Q只有一组数据时,画不出来分类线,一个点就一类自然不存在分类线。 

 

你可能感兴趣的:(神经网络,matlab,感知器)