⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zuoyenew.asv

📁 模式识别的一个基础程序,手写数字模式识别,提供给大家分享
💻 ASV
字号:

clc
clear
close all
%---------------------------------------------------
for j=1:10
% 产生训练样本
for i=1:10
filename1 = strcat(num2str(j-1),' (',num2str(i),').bmp');
pt1 = im2double(rgb2gray(imread(filename1)));
P1 = reshape(pt1,1,39*39);
T1 = repmat([j-1],1,39*39);
          %repmat 产生m*n个矩阵a所组成的矩阵repmat(a,m,n)
%---------------------------------------------------
% 设置网络参数
NodeNum = 78;                   % 隐层节点数 
TypeNum = 1;                    % 输出维数

TF1 = 'tansig';TF2 = 'purelin'; % 判别函数(缺省值)
net = newff(minmax(P1),[NodeNum TypeNum],{TF1 TF2});

net.trainParam.show = inf;          % 训练显示间隔
net.trainParam.lr = 0.3;            % 学习步长 - traingd,traingdm
net.trainParam.mc = 0.95;           % 动量项系数 - traingdm,traingdx
net.trainParam.mem_reduc = 10;      % 分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)
net.trainParam.epochs = 50;       % 最大训练次数
net.trainParam.goal = 1e-20;         % 最小均方误差
net.trainParam.min_grad = 1e-20;    % 最小梯度
net.trainParam.time = inf;          % 最大训练时间
%---------------------------------------------------
% 训练
net = train(net,P1,T1);             % 训练
end
n{1,j} = net;                     %保存网络
%---------------------------------------------------
% 训练样本测试
Y1 = sim(net,P1);             % 训练样本实际输出
y1(j,:) = Y1;
% 结果统计1
MSE1(j) = mse(T1-Y1)                            %均方误差 
Result1(j) = 1-sum(abs(T1-Y1))                  % 正确分类显示为1
%---------------------------------------------------
end
% 测试样本测试
right = 0;
false = 0;
for jj=1:10
    for ii=1:10
        filename2 = strcat(num2str(jj-1),' (',num2str(ii),')t.bmp');
        pt2 = im2double(rgb2gray(imread(filename2)));
        P2 = reshape(pt2,1,39*39);
        T2 = repmat([jj-1],1,39*39);        
        Y2 = sim(n{1,jj},P2);   
        y2(jj,ii)= Y2(1,1);
        % 结果统计2
        MSE2(jj,ii) = mse(T2-Y2)                            %均方误差
        %Result2(jj,ii) = 1-sum(abs(T2-Y2))                  % 正确分类显示为1
            if (sum(abs(Y2(1,1)-(jj-1))))<0.001
                right = right + 1;
            else
                false = false + 1;
            end
    end
end
['结果输出:']
y2
['测试正确识别率:',num2str(right/(right+false))]
%---------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -