感知机网络的参数设置

% 具体用法:
% 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. Java程序---多数字求和

    题目: 编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 设计思想: 1.记录要输入的数字的个数n 2.建立一个长度为n的数组存储输入的数字 3.累加求和并输出结果 注:此程序中应用了Sc ...

  2. 洛谷 P1823 音乐会的等待

    题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的. ...

  3. call与apply简单介绍

    var pet={ word:'...', speak:function(say){ console.log(say+' '+this.word) } } //pet.speak('speak')// ...

  4. MongoDB Shell 常用操作命令

    MonoDB   shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用javascript脚本完成操作的. Ø 数据库 1.Help查看命令提示 help db.help ...

  5. Java file方法的路径特性

    1.在flle方法里,直接写空白的路径,是会默认获取当前Java编译工作空间的路径. 例子如下: package example_1; import java.io.File; import java ...

  6. centos7-vmware克隆后的配置

    需要使用vmware克隆出多台服务器,验证集群功能. 所以采用全克隆的方式,生成多台虚拟机. 这里采用的是最小化安装的配置,桥接自动获取IP,其它配置可能不适合该指导. 修改网卡的MAC地址 网络配置 ...

  7. Java-左移右移-jdk8

    移位有三种 << 左移,左边补0 >> 右移,正数左边补0,负数补1 >>> 右移, 正数,负数统一左边补0 来看几个奇葩的代码 public static ...

  8. python入门-使用API

    python入门-使用API import requests #执行API调用并存储响应 url = 'https://api.github.com/search/repositories?q=lan ...

  9. Linux:DNS服务器搭建及配置

    1.yum install -y bind bind-chroot bind-utils 2.编辑DNS主配置文件 vim /etc/named.conf   修改如下标红色处即可: options ...

  10. es 测试代码

    测试代码 PUT test/doc/1 { "num": 1.0 } PUT test/doc/2 { "num": 2.0 } POST _scripts/j ...