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,1;
1,0,1,0,1;
1,0,0,1,1;
1,0,0,0,1];
N2=[1,0,0,0,1;
1,1,0,0,1;
1,0,1,0,0;
1,0,0,1,1;
1,0,0,0,1];
·
·
·
·
·
·
N9=[1,0,0,0,1;
1,1,0,0,1;
1,0,1,1,1;
1,0,0,1,1;
1,0,0,0,1];
I1=[0,0,1,1,0;
0,0,1,0,0;
0,0,1,0,0;
0,0,1,0,0;
0,1,1,1,0];
I2=[0,1,1,1,0;
0,0,1,0,0;
0,0,0,0,0;
0,0,1,0,0;
0,1,1,1,0];
·
·
·
·
·
·
V8=[1,0,0,0,1;
1,0,0,0,0;
0,1,0,1,0;
0,1,0,1,0;
0,0,1,0,0];
V9=[1,0,1,0,1;
1,0,0,0,1;
0,1,0,1,0;
0,1,0,1,0;
0,0,1,0,0];
%训练集
P=[N1(1:end);N2(1:end);N3(1:end);
N4(1:end);N5(1:end);N6(1:end);
N7(1:end);N8(1:end);N9(1:end);
I1(1:end);I2(1:end);I3(1:end);
I4(1:end);I5(1:end);I6(1:end);
I7(1:end);I8(1:end);I9(1:end);
L1(1:end);L2(1:end);L3(1:end);
L4(1:end);L5(1:end);L6(1:end);
L7(1:end);L8(1:end);L9(1:end);
H1(1:end);H2(1:end);H3(1:end);
H4(1:end);H5(1:end);H6(1:end);
H7(1:end);H8(1:end);H9(1:end);
T1(1:end);T2(1:end);T3(1:end);
T4(1:end);T5(1:end);T6(1:end);
T7(1:end);T8(1:end);T9(1:end);
C1(1:end);C2(1:end);C3(1:end);
C4(1:end);C5(1:end);C6(1:end);
C7(1:end);C8(1:end);C9(1:end);
E1(1:end);E2(1:end);E3(1:end);
E4(1:end);E5(1:end);E6(1:end);
E7(1:end);E8(1:end);E9(1:end);
F1(1:end);F2(1:end);F3(1:end);
F4(1:end);F5(1:end);F6(1:end);
F7(1:end);F8(1:end);F9(1:end);
Z1(1:end);Z2(1:end);Z3(1:end);
Z4(1:end);Z5(1:end);Z6(1:end);
Z7(1:end);Z8(1:end);Z9(1:end);
V1(1:end);V2(1:end);V3(1:end);
V4(1:end);V5(1:end);V6(1:end);
V7(1:end);V8(1:end);V9(1:end);]';%注意转置
期望输出
%期望输出,每一列表示一个样本的期望输出。
T=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ;
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 ;
];
测试样本空间
%测试样本空间:为10个字母
N0=[1,0,0,0,1;
1,1,0,0,1;
1,0,1,0,1;
1,0,0,1,1;
1,0,0,0,1];
I0=[0,1,1,1,0;
0,0,1,0,0;
0,0,1,0,0;
0,0,1,0,0;
0,1,1,1,0];
L0=[1,0,0,0,0;
1,0,0,0,0;
1,0,0,0,0;
1,0,0,0,0;
1,1,1,1,1];
H0=[1,0,0,0,1;
1,0,0,0,1;
1,1,1,1,1;
1,0,0,0,1;
1,0,0,0,1];
T0=[1,1,1,1,1;
0,0,1,0,0;
0,0,1,0,0;
0,0,1,0,0;
0,0,1,0,0];
C0=[1,1,1,1,1;
1,0,0,0,0;
1,0,0,0,0;
1,0,0,0,0;
1,1,1,1,1];
E0=[1,1,1,1,1;
1,0,0,0,0;
1,1,1,1,0;
1,0,0,0,0;
1,1,1,1,1];
F0=[1,1,1,1,0;
1,0,0,0,0;
1,1,1,0,0;
1,0,0,0,0;
1,0,0,0,0];
Z0=[1,1,1,1,1;
0,0,0,1,0;
0,0,1,0,0;
0,1,0,0,0;
1,1,1,1,1];
V0=[1,0,0,0,1;
1,0,0,0,1;
0,1,0,1,0;
0,1,0,1,0;
0,0,1,0,0];
%测试集
X=[N0(1:end);I0(1:end);L0(1:end);H0(1:end);T0(1:end);
C0(1:end);E0(1:end);F0(1:end);Z0(1:end);V0(1:end);]';%注意转置
参数设置与训练网络
%参数设置函数
net=newff(P,T,11);
net.trainParam.epochs=50;%最大迭代次数
net.trainParam.goal=0.000001;%计算期望与实际的差,当小于这个值时,迭代停止
net.trainParam.lr=0.2;%学习速率
%用训练样本集、期望输出来训练我们设置的网络
net=train(net,P,T);
测试阶段
%使用sim将测试样本集X进行测试,% sim函数用于仿真一个神经网络,输出结果返回到C
C=sim(net,X);
输出结果
在命令窗口用:
C(回车换行)
即可查看输出的分类结果:
>> C
C =
0.0844 0.0347 1.0807 0.9751 0.8557 0.9753 0.9901 0.8641 1.0358 1.0402
1.1358 1.0816 0.0260 0.0904 -0.0034 -0.0285 0.9873 1.0561 1.0743 0.9758
0.6802 1.0481 -0.0390 0.0107 1.0695 1.0152 0.0134 0.0654 0.9796 0.9731
-0.2012 0.7774 0.0502 0.9262 0.0497 0.9352 -0.0690 0.7618 -0.0061 1.1026
Matlab实现BP网络识别字母的更多相关文章
- Matlab实现单层感知机网络识别字母
感知机网络的参数设置 % 具体用法: % net=newp(pr,T,TF,LF); % % pr: pr是一个R×2的矩阵,R为感知器中输入向量的维度(本例中使用35个字符表征一个字母,那么其维度为 ...
- 基于Opencv自带BP网络的车标简易识别
代码地址如下:http://www.demodashi.com/demo/12966.html 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1.准备工作 1.1 训练集和测 ...
- Matlab的BP神经网络工具箱及其在函数逼近中的应用
1.神经网络工具箱概述 Matlab神经网络工具箱几乎包含了现有神经网络的最新成果,神经网络工具箱模型包括感知器.线性网络.BP网络.径向基函数网络.竞争型神经网络.自组织网络和学习向量量化网络.反馈 ...
- 详细MATLAB 中BP神经网络算法的实现
MATLAB 中BP神经网络算法的实现 BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法. 具体步骤 这里 ...
- 关于BP网络的一些总结
背景 前段时间,用过一些模型如vgg,lexnet,用于做监督学习训练,顺带深入的学习了一下相关模型的结构&原理,对于它的反向传播算法记忆比较深刻, 就自己的理解来描述一下BP网络. 关于BP ...
- 基于Levenberg-Marquardt训练算法的BP网络Python实现
经过一个多月的努力,终于完成了BP网络,参考的资料为: 1.Training feed-forward networks with the Marquardt algorithm 2.The Leve ...
- Python实现bp神经网络识别MNIST数据集
title: "Python实现bp神经网络识别MNIST数据集" date: 2018-06-18T14:01:49+08:00 tags: [""] cat ...
- 从头推导与实现 BP 网络
从头推导与实现 BP 网络 回归模型 目标 学习 \(y = 2x\) 模型 单隐层.单节点的 BP 神经网络 策略 Mean Square Error 均方误差 \[ MSE = \frac{1}{ ...
- 我对BP网络的简单的理解
最近在学习tf的神经网络算法,十多年没有学习过数学了,本来高中数学的基础,已经彻底还给数学老师了.所以我把各种函数.公式和推导当做黑盒子来用,理解他们能做到什么效果,至于他们是如何做到的,暂时不去深究 ...
随机推荐
- 使用fakeroot模拟root权限执行程序(转)
Hack #57: 使用fakeroot模拟root权限执行程序 fakeroot是什么 例如Debian在生成package的时候,编译完之后,不能立刻在当前环境执行make install,需要执 ...
- spark streaming的有状态例子
import org.apache.spark._ import org.apache.spark.streaming._ /** * Created by code-pc on 16/3/14. * ...
- 第11课 std::bind和std::function(2)_std::bind绑定器
1. 温故知新:std::bind1st和std::bind2nd (1)bind1st.bind2nd首先它们都是函数模板,用于将参数绑定到可调用对象(如函数.仿函数等)的第1个或第2个参数上. ( ...
- Spark2.0.0源码编译
Hive默认使用MapReduce作为执行引擎,即Hive on mr,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark.由于MapRedu ...
- 爬虫概念 requests模块
requests模块 - 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能 ...
- contentupe 表的用法
model 代码 from django.db import modelsfrom django.contrib.contenttypes.models import ContentType #dja ...
- swap空间不够导致安装失败解决方法
在安装Oracle的时候,可能因为我们分配的swap空间不够导致安装失败.处理步骤如下: SWAP空间为2G [root@linux01 oracle]# free total ...
- VS2015和QTcreator冲突解决办法
当我安装了QT(联合VS的版本)和VS时候,刚开始几个月都是可以的,突然有一天不行了,一直显示出错(由于着急没有记录出错截图)!这个时候卸载QT和VS都没有用,两个软件连新建工程都不行了.试了网上说的 ...
- 常见排序算法 - Java实现
1.冒泡排序 每次比较相邻的两个元素大小,调整顺序.从头到尾执行一轮(i),最大数值的元素就排到最后.每次从头到尾执行一轮,都会排好一个元素(length - i - 1).这就是说一个包含 n 个元 ...
- 接口详解例子代码(附Java1.8的接口新特性)
接口,与抽象类类似但是区别也很大,他们都是标签,用来提醒父类一定要实现的类里创建抽象方法.而接口类可以implements 多个接口,抽象类则只能父类只能继承一个抽象类,与抽象不同的是它不是继承组合关 ...