Matlab实现单层感知机网络识别字母

感知机网络的参数设置
% 具体用法:
% 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实现单层感知机网络识别字母的更多相关文章
- 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 ...
- matlab手写神经网络实现识别手写数字
实验说明 一直想自己写一个神经网络来实现手写数字的识别,而不是套用别人的框架.恰巧前几天,有幸从同学那拿到5000张已经贴好标签的手写数字图片,于是我就尝试用matlab写一个网络. 实验数据:500 ...
- 单层感知机_线性神经网络_BP神经网络
单层感知机 单层感知机基础总结很详细的博客 关于单层感知机的视频 最终y=t,说明经过训练预测值和真实值一致.下面图是sign函数 根据感知机规则实现的上述题目的代码 import numpy as ...
- TensorFlow从0到1之TensorFlow实现单层感知机(20)
简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,它只能解决线性可分的问题.虽然这限制了单层感知机只能应用于线性可分问题,但它具有学习能力已经很好了 ...
- TensorFlow单层感知机实现
TensorFlow单层感知机实现 简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,只能解决线性可分的问题.虽然限制了单层感知机只能应用于线性可分 ...
- 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10
简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...
- MATLAB实例:聚类网络连接图
MATLAB实例:聚类网络连接图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 本文给出一个简单实例,先生成2维高斯数据,得到数据之后,用模糊C均值( ...
- pytorch——预测值转换为概率,单层感知机
softmax函数,可以将算出来的预测值转换成0-1之间的概率形式 导数的形式 import torch import torch.nn.functional as F x=torch.tensor( ...
- 基于MATLAB的手写公式识别(9)
基于MATLAB的手写公式识别(9) 1.2图像的二值化 close all; clear all; Img=imread('drink.jpg'); %灰度化 Img_Gray=rgb2gray(I ...
随机推荐
- MongoDb进阶实践之一 如何在Linux系统上安装和配置MongoDB
转载来源:https://www.cnblogs.com/PatrickLiu/p/8630151.html 一.NoSQL数据简介 1.NoSQL概念 NoSQL(NoSQL = Not Only ...
- (转)CS域和PS域
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013485792/article/details/50818356 CS域和PS域的区别: 1.基 ...
- SQLite3数据库
#SQLite可视化管理工具(SQLite Expert Pro) SQLite特点: 1. 遵守ACID(原子性.一致性.隔离性和持久性)的关系型数据库管理系统:2. 不是一个C/S结构的数据库引擎 ...
- 开关Windows休眠功能
在windows休眠的时候会把内存里的数据缓存到硬盘的C:/Hiberfil.sys文件,万一断电能够从中恢复状态,然而这对SSD硬盘损耗很大,如果没必要还是关了吧: 关闭: powercfg -h ...
- gulp 编译es6 react 教程 案例 配置
1.gulp基本配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel') ...
- 电商系统架构总结4(webapi 版本控制)
为了 顺利迭代升级,web api 在维护过程是不断升级的,但用户是不能强迫他们每次都跟随你去升级,这样会让用户不胜其烦.为了保证不同版本的客户端能同时兼容,在web api接口上加入版本控制就很有必 ...
- uWSGI, Gunicorn, 啥玩意儿?
因为nginx等优秀的开源项目,有不少本来不是做服务器的同学也可以写很多服务器端的程序了.但是在聊天中会发现,大家虽然写了不少代码,但是对wsgi是什么,gunicorn是什么,反向代理又是什么并不了 ...
- linux安装chrome浏览器
按照下面的方式安装 wget -P /home/linfu/桌面 https://dl.google.com/linux/direct/google-chrome-stable_current_amd ...
- es6(15)--generator
//generator处理异步,下一步用next,遇到return或者yied就会停止 { //generator基本定义 let tell=function* (){ yield 'a'; yiel ...
- JVM总结-垃圾回收
Java 虚拟机的自动内存管理,将原本需要由开发人员手动回收的内存,交给垃圾回收器来自动回收.不过既然是自动机制,肯定没法做到像手动回收那般精准高效 [1] ,而且还会带来不少与垃圾回收实现相关的问题 ...