【MATLAB深度学习工具箱】学习笔记--字符识别Character Recognition

问题定义

本例子展示如何通过神经网络进行简单的字符识别。

根据帮助文档,待分析的数据通过脚本prprob生成,此脚本定义了一个矩阵,共26列,每一列是字母表中的一个字母。每一列有25行,数值为0或1。通过这样的数据表示,每一个字母是一个5×7的位图。

导入数据

[X,T] = prprob;

逐个进行显示,如下图所示。

字符A

 其他25个字符如下图所示

for ii=1:25
    subplot(5,5,ii);
    plotchar(X(:,ii+1));
end

 

训练过程

随机数种子初始化

setdemorandstream(pi);

生成第一个神经网络【无噪声】

net1 = feedforwardnet(25);
view(net1)

得到如下神经网络示意图

 训练第一个神经网络【无噪声】

net1.divideFcn = '';
net1 = train(net1,X,T,nnMATLAB);

得到如下结果

 从Regression图中,可以看出几乎完美拟合。

 训练第二个神经网络【增加噪声】

针对每一个字母的位图,生成了30个带有噪声的图片。

numNoise = 30;
Xn = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*0.2,0),1);
Tn = repmat(T,1,numNoise);

带噪音版本的字母A如下图所示

其他字母如下图所示

for ii=1:25
    subplot(5,5,ii);
    plotchar(Xn(:,ii+1));
end

 生成新的网络并进行训练

net2 = feedforwardnet(25);
net2 = train(net2,Xn,Tn,nnMATLAB);

得到如下结果

 Performance:

在验证集上虽然出现了最低点,但是迭代后期函数值变化较小。

 从Regression可以看出,拟合效果出现了散布。

 对比分析

逐步增加测试集Test Set的噪声水平,再次对无噪声训练的网络【记为网络1】和添加噪声后训练的网络【记为网络2】进行测试,发现:

(1)在噪声水平较低(小于0.1)两个网络的误差率相等且均较低;【从另一角度其实可以反映出,网络1其实是一个过拟合的网络。】

(2)在噪声水平∈(0.2,0.4)范围内,网络1误差率迅速上升,而网络2误差率有所上升,仍大幅小于误差1;

(3)在噪声水平∈(0.4,1)范围内,网络1误差率一直维持在较高的程度,而网络2误差率持续上升,仍大幅小于误差1。

可见,在网络经过含噪声的数据训练后,对噪声的容忍度更强。

noiseLevels = 0:.05:1;
numLevels = length(noiseLevels);
percError1 = zeros(1,numLevels);
percError2 = zeros(1,numLevels);
for i = 1:numLevels
  Xtest = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*noiseLevels(i),0),1);
  Y1 = net1(Xtest);
  percError1(i) = sum(sum(abs(Tn-compet(Y1))))/(26*numNoise*2);
  Y2 = net2(Xtest);
  percError2(i) = sum(sum(abs(Tn-compet(Y2))))/(26*numNoise*2);
end

figure
plot(noiseLevels,percError1*100,'--',noiseLevels,percError2*100);
title('Percentage of Recognition Errors');
xlabel('Noise Level');
ylabel('Errors');
legend('Network 1','Network 2','Location','NorthWest')

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值