感知机网络的参数设置

% 具体用法:
% 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. CentOS的文件属性:命令 ls -l

    第一列:有11位 1)第一位表示文件类型 1)l表示链接文件 2)d表示目录 3)-普通文件 4)b块设备  磁盘分区就是这种类型 5)c 串行端口设备文件(字符设备文件),比如键盘,鼠标,打印机,t ...

  2. 封装MemoryCache

    一.定义一个缓存接口IChace using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  3. CS229 6.5 Neurons Networks Implements of Sparse Autoencoder

    sparse autoencoder的一个实例练习,这个例子所要实现的内容大概如下:从给定的很多张自然图片中截取出大小为8*8的小patches图片共10000张,现在需要用sparse autoen ...

  4. string类和stringBuilder类

    字符串是C#中的一种重要数据类型,在项目开发中,离不开字符串操作.C#提供了string类实现字符串操作.于Convert类相似,string类中方法有静态方法和非静态方法.注意,在C#中String ...

  5. Solr——Windows下部署Solr7.5.0至jetty、Tomcat

    Solr6用默认的Jetty启动 需要的软件支持 JDK1.8以上 Solr6的安装包(solr-7.5.0.zip ) Solr自带一个Jetty环境,可以很方便的运行Solr. 直接到解压缩的so ...

  6. Java-1.6-并发包-集合

    List相关 对于List并发包就只扩展了一个CopyOnWriteArrayList<E> Set相关 对于Set,并发包扩展ConcurrentSkipListSet<E> ...

  7. SAP生产机该不该开放Debuger权限(转)

    前段时间公司定制系统在调用SAP RFC接口的时候报错了,看错误消息一时半会儿也不知道是哪里参数数据错误,就想着进到SAP系统里面对这个接口做远程Debuger,跟踪一下参数变量的变化,结果发现根本就 ...

  8. 浮动ip原理及简单实现

    原理:https://blog.csdn.net/readiay/article/details/53538085 简单实现:https://www.cnblogs.com/victorwu/p/70 ...

  9. Xshell 本地上传、远程下载文件

    1.Xshell登录工具在创建会话的时候,点击最下面的ZMODEM,可以填写下载的路径和加载的路径:2个路径可以一样也可以不一样: 在下载的时候可以下载到相应的路径去.(我设置的是下载前始终询问) 2 ...

  10. python之type

    >>> isinstance(object,type) True >>> isinstance(list,type) True >>> isins ...