2008年9月26日星期五

神经网络进行字符识别MATLAB程序

神经网络进行字符识别
close all
clear
echo on
clc
%用BP神经网络进行英文字符识别
%NEWFF——生成一个新的前向神经网络
%TRAIN——对神经网络进行训练
%SIM——对神经网络进行仿真
pause % 敲任意键开始
clc
%载入训练样本
[alphabet,targets]=prprob
[R1,Q1]=size(alphabet)
[R2,Q2]=size(targets)
pause
clc
%生成神经网络
S1=10
S2=R2
net=newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');
net.LW{2,1}=net.LW{2,1}*0.01;
pause
clc
%训练神经网络
%1.用理想样本训练神经网络
P=alphabet;
T=targets;
%net.performFcn='see';
net.trainParam.goal=0.1;
net.trainParam.show=20;
net.trainParam.epochs=5000;
net.trainParam.mc=0.095;
[net,tr]=train(net,P,T);
pause
clc
%2.用喊有不同程度噪声的样本训练神经网络
netn=net;
netn.trainParam.goal=0.6;
netn.trainPAram.epochs=300;
T=[targets targets targets targets];
for pass=1:10
fprintf('Pass=%.0f\n',pass);
P=[alphabet,alphabet,(alphabet+randn(R1,Q1)*0.1),(alphabet+randn(R1,Q1)*0.2)];
[netn,tr]=train(netn,P,T);
echo off
end
echo on
pause
%3.再次用理想样本训练神经网络
netn.trainParam.goal=0.1;
netn.trainParam.epochs=500;
netn.trainParam.show=5;
P=alphabet;
T=targets;
[netn,tr]=train(netn,P,T);
%训练结束
pause
clc
%对识别网络进行测试
%设置测试参数
noise_range=0:0.05:5; %噪声均方差
max_test=100;
network1=[];%网络1的误识率
network2=[];%网络2的误识率
%进行网络仿真和测试
for noiselevel=noise_range
fprintf('Testing network with noise level of %.2f.\n',noiselevel);
errors1=0;
errors2=0;
for i=1:max_test
P=alphabet+randn(35,26)*noiselevel;
%测试网络1
A=sim(net,P);
AA=compet(A);
errors1=errors1+sum(sum(abs(AA-T)))/2;
%测试网络2
An=sim(net,P);
AAn=compet(An);
errors2=errors2+sum(sum(abs(AAn-T)))/2;
echo off
end
network1=[network1 errors1/26/100];
network2=[network2 errors2/26/100];
end
echo on
pause %敲任意键绘制测试结果曲线——误识率曲线
clc
%绘制网络误识率曲线
plot(noise_range,network1*100,'--',noise_range,network2*100);
title('Percentage of Recognition Errors(%)');
xlable('Noise Level');
ylable('Network1-- network2---');
pause
clc
%一个测试实例
%生成一个喊噪声的字母B作为网络输入
noisyB=alphabet(:,2)+randn(35,1)*0.2;
%绘制含噪声的字母B的位图
plotchar(noisyB);
pause
clc
%对输入模式进行识别
A2=sim(netn,noisyB);
A2=compet(A2)
answer=find(alphabet(A2)==1);
%绘制识别结果对应的模式位图
plotchar(alphabet(:,answer));
pause
echo off

没有评论:

发表评论

欢迎访问、交流!对本博客有何建议,请
来信告知!
本博内容来源于网络,如有不当或侵犯权益,请来信告知,将及时撤除!
如引用博客内容、论文,请注明原作者!

Google一下本博客

  • 《Getting Things Done》读书笔记 - 本文来自 inertial 原创投稿。 我第一次听说《Getting Things Done》这本书的时候误以为它和世面上的那些成功学书籍没什么区别,后来在不少书中看到了这个名字,也看见了很多人的推荐,由此产生了很大的兴趣。上个月正好有不少空闲,就抽时间把这本书读完了。 本来打算读英文原版,但是原版的生...
    5 年前
  • [原]Linux下编译使用boost库 - Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与...
    6 年前
  • [原]猎头、培训与咨询的价值(2)【补1】——北漂18年(93) - 【上期用手机写的,同时用语音输入转化成文字,错字较多,经好友霍师傅提醒本期重写,并增加一部分新内容】 简单谈下我对猎头、培训与咨询的看法。三样都干过,算是有些浅见。 猎头 简单的说就是人才中介。虽然在公司看来是可以直接解决现有企业问题的一个直接方法,但很多时候都不太管用。 猎头费一般是人才的一个月月...
    6 年前
  • OpenCV統計應用-Mahalanobis距離 - Mahalanobis距離是一個可以準確找出資料分布上面極端值(Outliers)的統計方法,使用線性迴歸的概念,也就是說他使用的是共變數矩陣以及該資料分布的平均數來找尋極端值的產生,而可以讓一群資料系統具有穩健性(Robust),去除不必要的雜訊訊息,這邊拿前面共變數矩陣的資料為例,並且新增了兩個點座標向量來做...
    15 年前
  • 努力推进模式识别实际产品的开发与应用 - Salu 无论是手写体识别、文档处理、人脸识别、基于内容的图片搜索、嵌入人工智能的搜索技术、虚拟网络社区、还是其它相关新科技下的信息整合领域,现在都在努力实用化。 前两年、即使现在还有很多人在抱怨说人脸的方法都不能用,但是就今年出现的和正在做的有关人脸识别实际应用的各种形式的产品可以说如雨后春笋。这是一个趋...
    16 年前