感知机网络的参数设置

% 具体用法:
% net=newp(pr,T,TF,LF);
%
% pr: pr是一个R×2的矩阵,R为感知器中输入向量的维度(本例中使用35个字符表征一个字母,那么其维度为35),每一行表示输入向量每个分量的最小值和最大值。在本例中只有0和1. % T: T表示输出节点的个数,标量(本例使用三个输出节点的组合结果来 表示某一个类标号。实际上三个类标号至少需要两个比特位表示。)
% TF: 传输函数,可选hardlim和hardlims,默认为hardlim,建议取hardlims
% LF: 学习函数,可选learnp或learnpn,默认为learnp,learnpn对输入量大小的变化不明显,
% 当输入的向量在数值的幅度上变化较大用learnpn代替learnp可以加快计算速度
%

样本空间##

%样本空间:每个样本使用7×5的二值矩阵来表征一个字母。
E1=[0 0 0 0 0;
1 1 1 0 0 ;
1 0 0 0 0 ;
1 1 1 0 0 ;
1 0 0 0 0;
1 1 1 1 0 ;
0 0 0 0 0];
E2=[0 0 0 0 0;
1 1 1 1 0 ;
1 0 0 0 0 ;
1 1 0 0 0 ;
1 0 0 0 0;
1 1 1 1 0 ;
0 0 0 0 0];
E3=[0 0 0 0 0;
1 1 1 1 0 ;
1 0 0 0 0 ;
1 1 1 0 0 ;
1 0 0 0 0;
1 1 1 1 0 ;
0 0 0 0 0];
E4=[0 0 0 0 0;
1 1 1 1 0 ;
1 0 0 0 0 ;
1 1 1 0 0 ;
1 0 0 0 0;
1 1 1 0 0 ;
0 0 0 0 0];
L1=[0 0 0 0 0;
0 1 0 0 0;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 1 1 0;
0 0 0 0 0];
L2=[0 0 0 0 0;
0 1 0 0 0;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 1 1 0;
0 0 0 0 0];
L3=[0 0 0 0 0;
0 1 0 0 0;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 1 1 0;
0 0 0 0 0];
L4=[0 0 0 0 0;
0 1 0 0 0;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 0 0 0 ;
0 1 1 1 0;
0 0 0 0 0];
I1=[0 0 0 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0 ;
0 0 1 0 0 ;
0 0 1 0 0;
0 0 0 0 0];
I2=[0 0 0 0 0;
0 0 1 0 0;
0 0 1 0 0 ;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 0 0 0];
I3=[0 0 0 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0 ;
0 0 0 0 0];
I4=[0 0 0 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0;
0 0 1 0 0 ;
0 0 0 0 0];
%下面将使用每个字母类型的前三个样本作为训练样本,第四个作为测试样本。

训练阶段

%选取每个字母的前三个样本作为训练样本
p=[E1(1:end);E2(1:end);E3(1:end);I1(1:end);I2(1:end);I3(1:end);L1(1:end);L2(1:end);L3(1:end)]';%注意单引号“'”表示转置 %t表示期望的输出,每一列对应于一个样本的期望,从而监督其分类标号。如第一列{1,0,1}表示字母E这个类,最后一列{0,1,0}表示字母L这个类。
t=[1 1 1 1 1 1 0 0 0;
0 0 0 0 0 0 1 1 1;
1 1 1 0 0 0 0 0 0]; %初始化pr为一个35行,2列的零矩阵。
pr=zeros(35,2); %定义输入向量每个维度的最小值和最大值。
pr(:,2)=1; %感知机网络参数设置函数
net=newp(pr,3,'hardlim','learnp');%hardlim是二极激活函数(传递函数),learnsp是学习函数 %设置最大迭代次数为20
net.trainParam.epochs=20; %将训练集p和期望的输出(类标号)装载进设置好的网络net
net=train(net,p,t);

测试阶段

%使用sim将测试样本进行测试,% sim函数用于仿真一个神经网络,输出结果返回到C
C1=sim(net,E4(1:end)');
C2=net(I4(1:end)');

输出结果

  在命令窗口用:

C1(回车换行)
C2(回车换行)

即可查看输出的分类结果:

>> C1

C1 =

     1
0
1 >> C2 C2 = 1
0
0

Matlab实现单层感知机网络识别字母的更多相关文章

  1. Matlab实现BP网络识别字母

    训练样本空间   每个样本使用5×5的二值矩阵表征一个字母.一共10个字母类型,分别是N,I,L,H,T,C,E,F,Z,V.每个字母9个样本.共90个. N1=[1,0,0,0,1; 1,0,0,0 ...

  2. matlab手写神经网络实现识别手写数字

    实验说明 一直想自己写一个神经网络来实现手写数字的识别,而不是套用别人的框架.恰巧前几天,有幸从同学那拿到5000张已经贴好标签的手写数字图片,于是我就尝试用matlab写一个网络. 实验数据:500 ...

  3. 单层感知机_线性神经网络_BP神经网络

    单层感知机 单层感知机基础总结很详细的博客 关于单层感知机的视频 最终y=t,说明经过训练预测值和真实值一致.下面图是sign函数 根据感知机规则实现的上述题目的代码 import numpy as ...

  4. TensorFlow从0到1之TensorFlow实现单层感知机(20)

    简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,它只能解决线性可分的问题.虽然这限制了单层感知机只能应用于线性可分问题,但它具有学习能力已经很好了 ...

  5. TensorFlow单层感知机实现

    TensorFlow单层感知机实现 简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,只能解决线性可分的问题.虽然限制了单层感知机只能应用于线性可分 ...

  6. 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10

    简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...

  7. MATLAB实例:聚类网络连接图

    MATLAB实例:聚类网络连接图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 本文给出一个简单实例,先生成2维高斯数据,得到数据之后,用模糊C均值( ...

  8. pytorch——预测值转换为概率,单层感知机

    softmax函数,可以将算出来的预测值转换成0-1之间的概率形式 导数的形式 import torch import torch.nn.functional as F x=torch.tensor( ...

  9. 基于MATLAB的手写公式识别(9)

    基于MATLAB的手写公式识别(9) 1.2图像的二值化 close all; clear all; Img=imread('drink.jpg'); %灰度化 Img_Gray=rgb2gray(I ...

随机推荐

  1. 《Exploring in UE4》多线程机制详解[原理分析]

    转自:https://zhuanlan.zhihu.com/c_164452593 目录一.概述二."标准"多线程三.AsyncTask系统3.1 FQueuedThreadPoo ...

  2. 使用Nginx+Lua实现自定义WAF

    使用Nginx+Lua实现自定义WAF 版权声明:全部抄自赵班长的GitHub上waf项目 功能列表: 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝. 支持URL白名单,将不需要过滤的URL ...

  3. vue使用树形控件z-tree,动态添加数据,默认展开第一行

    环境:vue 2.9.3; webpack; 插件:z-tree,jquery(cnpm install xxxx) 问题;由于数据量比较多,需要动态加载数据,默认第一次请求的数据是最高一级,然后子集 ...

  4. Solr——Windows下部署Solr6.6.0至Tomcat8.5.28(二)

    1,core理解 如果把solr理解为个数据库的话,那么core可以理解为数据库中的一张表,其实就是数据集合 在写本片文章之前看到网上很多教程都说需要找到solr.xml来配置core的信息,特此说明 ...

  5. JavaWeb学习总结(三)——Tomcat服务器学习和使用

    收藏 JavaWeb学习总结(三)——Tomcat服务器学习和使用 http://www.cnblogs.com/xdp-gacl/p/3744053.html

  6. SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  7. 【Fiddler学习】Fiddler抓包HTTPS请求和手机抓包

    一.安装Fiddler 百度搜索:Fiddler抓包工具,然后安装即可. 然后打开Fiddler工具,打开浏览器随意输入任何网址,就可以在Fiddler看到抓包信息. 但是:默认情况下,Fiddler ...

  8. python协程的使用

    1.Python对协程的支持是通过generator(生成器 yield)实现的.协程执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行. 2.调用生成器运行的过程中 ...

  9. [Unity算法]弧度和角度

    参考链接: https://zhidao.baidu.com/question/576596182.html 1.弧度和角度的转换 2.sin函数 3.cos函数 4.tan函数 5.特殊的三角函数值 ...

  10. python 小笔记

    1 删除非空文件夹 import shutil shutil.rmtree('c:\\test') print 'ok' ## 判断非空删除 if os.path.exists('../'+kemu_ ...