目录

单层感知器基础理论知识

MATLAB神经网络工具箱使用例程

算法实现

参考文献

单层感知器基础理论知识

关于单层感知器的理论知识与MATLAB中单层感知器相关函数,在单层感知器--matlab神经网络这篇文章中有详细的讲解。

MATLAB神经网络工具箱使用例程

实例:在下图中,o点的输出值为1,*点的输出值为0。希望能获得一个神经网络,当我们输入一个坐标时,它能给出对应的输出值。

根据理论知识,结果将会是一条直线(x1*w1+x2*w2+b=0),他将会把平面分割为两块区域,一块输出值为0,一块输出值为1。使用MATLAB神经网络工具箱求解代码如下:

net = newp([0 1; 0 1],1) %创建一个单层感知器(NEW Perceptron),它有两个输入节点(假设为x1和x2),x1的取值范围是0~1,x2的取值范围是0~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')

hold 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(i+1)=mae(e);

if (ee(i+1)<0.001) % 判断

disp('we have got it:');

disp(w);

break;

end

% 更新权值和偏置

w=w+n*(d-x2)*P';

if (i>=MAX) % 达到最大迭代次数,退出

disp('MAX times loop');

disp(w);

disp(ee(i+1));

break;

end

i= i+1;

end

figure;

subplot(2,1,1); % 显示待分类的点和分类结果

plot(P(2,2:end),P(3,2:end),'ko');

hold 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','分类直线');

hold off

subplot(2,1,2); % 显示mae值的变化

x1=0:i;

plot(x1,ee,'o-');

s=sprintf('mae的值(迭代次数:%d)', i+1);

title(s)

参考文献

陈明.MATLAB神经网络原理与实例精解

单层感知器神经网络matlab,MATLAB神经网络——单层感知器相关推荐

  1. 神经网络 | 网络优化-线性神经网络-delta学习规则-梯度下降法(单层感知器-异或问题Python源代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  2. MATLAB中神经网络train函数使用说明

    MATLAB中神经网络train( )函数使用说明 函数的语法格式如下: [net, tr]=train(net, P, T, Pi, Ai): train( )函数用于训练创建好的感知器网络,事实上 ...

  3. ann神经网络matlab,ann神经网络(深入浅出图神经网络 pdf)

    是包含的关系吗?还是一种? BP神经网络是ANN人工神经中的一种,常用的神经网络有BP.RBF.SOM.Hopfield等等,其功能不经相同,可总体来说ANN的主要功能是模式识别和分类训练. 我现在急 ...

  4. 深度神经网络的matlab实现,深度神经网络代码matlab

    为什么不用matlab做深度学习? matlab可以做深度学习,但是从实用性的角度来讲matlab的实现效率相对较低,训练耗时较长.初次学习计算机语言就选择matlab不是一个明智的选择,最好选用C或 ...

  5. 基于matlab BP神经网络的手写数字识别

    摘要 本文实现了基于MATLAB关于神经网络的手写数字识别算法的设计过程,采用神经网络中反向传播神经网络(即BP神经网络)对手写数字的识别,由MATLAB对图片进行读入.灰度化以及二值化等处理,通过神 ...

  6. 初探神经网络(二)单层感知机的Rosenblatt算法原理

    本期大量干货,配合线性代数和较扎实的统计知识食用更佳. 介绍过了M-P模型,也了解到了M-P模型本质上是对生物上神经元的抽象模型.在上一章,我反复在强调这只是一个生物学的概念,我相信看到这篇文章的人绝 ...

  7. Matlab与神经网络入门

    第一节.神经网络基本原理  1. 人工神经元( Artificial Neuron )模型  人工神经元是神经网络的基本元素,其原理可以用下图表示: 图1. 人工神经元模型 图中x1~xn是从其他神经 ...

  8. BP神经网络及matlab实现

    本文主要内容包括: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集 ...

  9. Matlab遗传算法神经网络泰坦尼克号

    Matlab遗传算法神经网络泰坦尼克号 介绍 实验步骤 流程图 初始化参数 初始化种群 计算适应度函数 选择 交叉 变异 实验结果 总代码 介绍 数据处理见上篇博文,这里用遗传算法优化神经网络的参数, ...

  10. m基于RBF神经网络和BP神经网络的信道估计误码率matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在无线通信系统中,从发射端发射的信号,经过直射.反射.散射等路径到达接收端.在ofdm系统中,为了获 ...

最新文章

  1. c语言学习笔记-if语句块一定要加分号
  2. linux7.3系统u盘制作,制作centos7U盘启动盘
  3. 1000亿产值、2500万辆销售目标,范迪塞尔代言的雅迪将如何正确“出海”?
  4. Win32 串口编程(四)
  5. 基于VS2019的Eigen库安装详解
  6. Web Magic 总体架构
  7. 分页条件查询_mongodb多条件分页查询的三种方法
  8. FFMpeg,SDL编译 No avaiable video device
  9. java九九成表发_用EXCEL可多种办法生成99乘法表
  10. openGL天空盒实现-立方体贴图
  11. 造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些?
  12. 公司官网建设企业网站建设的好处,为什么要做网站?
  13. 怎样在服务器上运行ea,外汇EA如何在MT4上运行?以及如何挂到服务器?
  14. 【0520】密钥管理技术
  15. Umap与 t-sne可视化CNN特征
  16. iOS开发之Crash分析,以及收集
  17. Radare2 学习笔记:从入门到精通 1. Radare2 简介,及安装
  18. 网页游戏制作html5,利用HTML5 Canvas制作一个简单的打飞机游戏
  19. 微服务学习总结5(Ocelot+Polly+Consul)
  20. 写文三年了,给大家说点儿心里话

热门文章

  1. python函数之间变量的调用
  2. GoogleNet论文解读
  3. 【vue+elementui】时间选择器:时间格式、设置时间最大日期或最小日期、设置时间选择范围
  4. 抽象工厂模式(Abstract Factory Pattern)
  5. 笔试——字符串算法题——寻找最大回文子串
  6. 传言阿里P10赵海平,被P11多隆打3.25后离职,如何评价赵海平对王垠的面试?
  7. 如何复制虚拟机中的数据到真实主机
  8. html怎么给文字添加视频链接,视频加文字水印,视频加图片水印,视频加外部链接,一个软件全部搞定...
  9. OPNsense用户手册-缓存代理
  10. 【uniapp公众号分销商城从0到1】手机验证注册登录(04)