感知机网络的参数设置

% 具体用法:
% 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. Shiro 五张表

    参考博客: http://blog.csdn.net/frankcheng5143/article/details/50836619 Filter:运行过程中改变进入资源的请求和资源返回的响应中的有效 ...

  2. Echarts动态加载柱状图的实例

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div style="width: 10 ...

  3. 安装部署elasticsearch

    ELK下载:https://www.elastic.co/downloads/ Beats:负责收集系统数据,可以直接发送到es中,也可以通过logstash中转 logstash:收集日志,为bea ...

  4. redis 过期时间与缓存

    设置过期时间 redis对于存储的键值可以设置过期时间,对于过期了的键值,redis会自动删除. > OK > get price " > expire price (in ...

  5. Nginx80端口转发+域名——实现IP+端口隐藏

    一.目的1.相信大家会遇到这样的问题:当一台服务器部署多个tomcat应用时,当我们访问tomcat时,需要在浏览器中输入服务器IP+端口号,这看起来非常的low. 二. 环境 1台服务服务器 假如I ...

  6. android开发 一个更优的listView的写法

    布局xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ...

  7. Linux配置和管理msyql命令

    配置和管理msyql: 1. 修改mysql最大连接数:cp support-files/my-mediuf,vim my.cnf,增加或修改max_connections=1024 关于my.cnf ...

  8. 代码:PC 链接列表面板border的一种做法(每行之间有分割线)

    PC 链接列表面板,border的一种做法 做页面经常遇到一种问题,上面是标题,下面是单行链接列表.为了保证后台套页面方便,所有列表项必须完全一样.但我们无法解决第一行或最后一行多出来的分割线. 使用 ...

  9. 57.2拓展之纯 CSS 创作黑暗中会动的眼睛和嘴巴

    效果地址:https://scrimba.com/c/cbNkBnuV HTML code: <!-- 定义dom, .eyes容器中包含2个元素 --> <div class=&q ...

  10. python中的open、close、read、write、len、exists

    open()打开文件 close()关闭文件 read()读取文件内容 write()写入内容 len()检查文件内容长度 exists()检查文件是否存在 我们举一个例子,将上方的内容全部应用到实际 ...