%给定样本输入向量P,目标输出向量T
%net = newp(PR,S,TF,LF)
%PR为输入矢量的取值范围的最大值和最小值 S为神经元的个数 TF为网络的传递函数 默认为hardlim LF为网络的学习函数 默认为learnp
%以及需要分类的向量组Q
%设计一个单层感知机对其分类
%[net,tr,Y,E,Pf,Af] = train(net,P,Pi,Ai)
%train通过调用网络训练函数net.trainFcn并根据训练函数net.trainParam对网络进行训练
%在输入变量中net为神经网络对象 P为网络输入 T为目标矢量Pi为输入延迟的初始状态 Ai为层延迟的初始状态
%在返回函数中net为新的网络 tr为训练记录 Y为网络输出 E为输出和目标矢量之间的误差 Pf为训练终止时输入的延时状态
%Af为训练终止时的层延时状态
P = [-0.3 -0.8 0.4;0.6 0 0.1];
T = [1 1 0];
net = newp([-1 1;-1 1],1);  %设置单层感知器
net.trainParam.epochs = 10; %设置网络的最大训练次数为20
net = train(net,P,T);       %使用训练函数对创建的网络进行训练
Y = sim(net,P);             %对训练后的网络进行仿真
E1 = mae(Y-T);              %计算输出量与目标量之间的均方误差
Q = [0.6 0.9 -0.1;-0.1 -0.5 0.5]; %检测训练好的神经网络的性能
Y1 = sim(net,Q);            %对网络进行仿真,仿真输出即为分类的结果
figure;                     %创建一个绘图的窗口
plotpv(Q,Y1);               %绘制输入向量和目标向量plotpv(P,T,V)输入向量、目标向量、控制图形的最大范围
plotpc(net.iw{1},net.b{1}); %在感知器向量图中绘制分界线plotpc(W,B,H)加权矩阵、阈值向量、最后画线的控制权

分类结果:

对于线性不可分的例子,如下图的两类模式(类a表示垂直线 类b表示平行线)通过感知器网络分类。显然对于两类模式类别无法用一个超平面分开,所以单层感知器是无法完成此任务。这里设置一个多层感知器网络来解决此问题。

多层感知器的结构如下,其中对应的传递函数f为强限幅传递函数:

对应强限幅传递函数公式如下:

通过依次扫描模式中的各列,将模式表示成向量。白方块用”-1“ 表示,黑方块用”1“表示,对于样本希望分两类即垂直的为1 水平的为0,则输入样本用p1 p2 p3 p4 表示,如下表:

输入样本 目标向量
p1 1 1 -1 -1 1
p2 -1 -1 1 1  1
p3 1  -1 1 -1 0
p4 -1 1 -1 1 0

将输入向量的前两个输入输入第一层感知器的第一个神经元,将输入向量的后两个输入输入第一层感知器的第二个神经元,运算结果如下图所示,其中p1、p11分别为两个神经元的输入,b1、b11分别为两个神经元的偏置(随机得到),iw1、iw11分别为两个神经元的[1行2列]权值矩阵(随机的到)a1、a11分别为两个神经元的输出。

第一次输入具体计算公式如下:

将第一层神经元输出组合后组成[2*4]的矩阵输入第二层神经元,在第二层神经元训练仿真后若输入的向量满足目标向量则训练结束。训练完成后得到的net可对输入向量进行分类。

在命令行输入

sim(net2,p2)

得到结果:

满足最初目标垂直线样本标记为1 水平线标记为0 。

上述非线性可分样例的代码如下:

pr1 = [-1 1;-1 1];%随机感知器     输入的范围
net1 = newp(pr1,1);
net11 = newp(pr1,1);
%%
%随机权重、偏置参数
net1.inputweights{1}.initFcn = 'rands';
net1.biases{1}.initFcn = 'rands';
net11.inputweights{1}.initFcn = 'rands';
net11.biases{1}.initFcn = 'rands';
index = 0;
while index == 0%%%第一层%神经元1net1 = init(net1);%iw1[1 2] * p1[2 4] = a1[1 4];%表示输入层到第一层隐层的权重iw1 = net1.IW{1};%net.IW{i,j}表示从第j个输出到第i层权重的权重矩阵,其值为N*R的矩阵b1 = net1.b{1};  %表示第一层隐层的偏置,其值为N*1的矩阵p1 = [1 -1 1 -1;1 -1 -1 1]; %第一层第一个单层感知器的输入[a1] = sim(net1,p1);        %进行仿真,输出结果到a1
%神经元2%iw11[1 2] * p11[2 4] = a11[1 4];net11 = init(net11);iw11 = net11.IW{1};b11 = net11.b{1};p11 = [-1,1,1,-1;-1,1,-1,1];%第一层第二个单层感知器的输入[a11] = sim(net11,p11);     %进行仿真,输出结果到a11%%
%第二层pr2 = [0 1;0 1];net2 = newp(pr2,1);         %第二层单个感知器建立,一个神经元net2.trainParam.epochs = 10;%最大训练次数(步数)设置为10net2.trainParam.show = 1;   %每隔一次展示一下训练结果p21 = ones(size(a1));p21 = p21.*a1;p22 = ones(size(a11));p22 = p22.*a11;p2 = [p21;p22];             %第一层中两个单层感知器的输出作为第二层单层感知器的输入t2 = [1 1 0 0];             %目标向量[net2,tr2] = train(net2,p2,t2);%第二层单层感知器的训练epoch2 = tr2.epoch;         perf2 = tr2.perf;iw2 = net2.IW{1};b2 = net2.b{1};a2 = sim(net2,p2);          %第二层进行仿真save Percept02 net1 net2if a2 == t2                 %结束条件,当训练结果满足目标向量时结束训练index = 1;end
end

单层感知器线性分类、多层感知器非线性分类样例 调用matlab神经网络工具箱实现相关推荐

  1. MATLAB神经网络工具箱中感知器权值和阈值的学习函数learnp

    我先把代码贴过来!慢慢研究! function [out1,out2] = learnp(varargin) %LEARNP Perceptron weight/bias learning funct ...

  2. 神经网络与机器学习 笔记—多层感知器(MLP)

    多层感知器(MLP) Rosenblatt感知器和LMS算法,都是单层的并且是单个神经元构造的神经网络,他们的局限性是只能解决线性可分问题,例如Rosenblatt感知器一直没办法处理简单异或问题.然 ...

  3. 深度学习02-神经网络(MLP多层感知器)

    文章目录 神经网络 简介 学习路径 分类 多层感知器(MLP) 神经网络认识 两层神经网络 输入层 从输入层到隐藏层 从隐藏层到输出层 激活层 输出的正规化 如何衡量输出的好坏 反向传播与参数优化 过 ...

  4. 人工神经网络:多层感知器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.今日所学 二.今日重点 前言 虽然异或问题成为感知器和早期神经网络的阿喀琉斯之踵,但它并非无解的问题.恰恰相反,解 ...

  5. matlab 神经网络ann用于分类方法

    matlab关于ann的分类方法讲解了一个例子,Fishr集上鸢尾花(Iris)的分类,学习了这个方法可以套用在个人项目上使用,万变不离其宗, 1.Fishr集上鸢尾花Iris数据集的分类 ①iris ...

  6. MP模型、单层感知器、多层感知器的理解

    神经网络基础 序言 MP模型 1.逻辑与: 2.逻辑或: 3.逻辑异或: 单层感知器 多层感知器(BP) 序言 关于神经网络的内容已经学习了很多,也发现了一些问题,而这些问题是因为基础不牢靠引起的,所 ...

  7. 逻辑斯第回归、softmax分类与多层感知器

    本专栏将推出一系列深度学习与图像处理相关的教程文章.注重原理精讲和代码实现.实现框架将重点选择Tensorflow或Pytorch.本讲从逻辑斯第回归入手,然后讲解softmax分类器,最后讲解多层感 ...

  8. 使用多层感知器进行图片分类

    文章目录 实验目标 实验要求 实验原理 实验步骤 实验分析 源代码 实验目标 多层感知器(Multi-Layer Perceptron,MLP)也叫人工神经网络(Artificial Neural N ...

  9. 单层感知器python_多层感知器背后的概念及Python实现

    机器学习正在成为数据科学中最具革命性的技术之一,它允许我们发现特征之间的非线性关系,并使用它来预测新的样本.机器学习中最简单的体例之一是多层感知器.在本文中,我将讨论多层感知器背后的概念,并向您展示如 ...

最新文章

  1. SAP WM 2-Step Picking的TO单据特殊的地方
  2. Apache服务器和tomcat服务器有什么区别?
  3. Centos7 上安装mysql遇上的问题:mysql无法正常启动
  4. 如鹏网 net高级技术 第二章 委托和事件(复习)
  5. 论文浅尝 - AAAI2021 | 基于对比学习的三元组生成式抽取方法
  6. java数据库表不存在_如果Java生产代码中不存在并在JUnit中确认,则创建数据库表...
  7. vue3,对比 vue2 有什么优点?
  8. rgb红色范围_RGB与BRG模式
  9. Excel 中 添加 复选框。
  10. PyTorch学习—10.nn中网络层的具体使用
  11. 在Nginx中配置SSL证书
  12. 什么样的会员管理才叫有效果的会员运营方案?
  13. android老人机桌面,孝敬父母哪家强?老人桌面大横评
  14. 在excel中如何筛选重复数据_Excel重复数据不会筛选?方法其实很简单!
  15. 冰蝎软件的配置与应用
  16. Metal每日分享,图像阀值素描滤镜效果
  17. 站长便民小工具引流网站源码_站长引流工具箱
  18. 阿里北京裁员,首批员工3.28之前告别大文娱
  19. 网络故障以及处理方法
  20. html可以向微信发信息吗,微信不加好友也能发消息?怎么做到的?

热门文章

  1. SSM框架+SSH框架简介
  2. Linux图形管理框架gdm3、lightdm、sddm、kdm介绍(一百三十七)
  3. idea 2018注册码
  4. 基于JAVA的股票交易管理系统-计算机毕业设计
  5. 线性代数拾遗(6)—— 向量空间投影与投影矩阵
  6. 代码重构——第一个实例
  7. 怎么拍出最真是的自己?
  8. 2021年塔式起重机司机考试题库及塔式起重机司机新版试题
  9. 路痴福音-AR室内导航+VR全景导航-无惧方向感错乱
  10. 知识的盛宴,GitChat 百万粉丝狂欢节