欢迎光临散文网 会员登陆 & 注册

【图像识别】RBF手写数字识别matlab源码

2021-08-28 00:14 作者:Matlab工程师  | 我要投稿

 一、简介


RBF神将网络是一种三层神经网络,其包括输入层、隐层、输出层。从输入空间到隐层空间的变换是非线性的,而从隐层空间到输出层空间变换是线性的。流图如下:


RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接。当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。其中,隐含层的作用是把向量从低维度的p映射到高维度的h,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。这样,网络由输入到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。


2 RBF神经网络的学习问题

 二、源代码

clear clc I=imread('sample3.bmp'); A=GetFeature(I); %将图像分为25块,计算每一块的空白部分所占比例 function data=GetFeature(I) [row,col]=find(I==0);                        %返回数字的上下左右的边界 I=I(min(row):max(row),min(col):max(col));    %截取手写数字图像,使其紧包含数字边界,不包含多余的空白 imwrite(I,'您手写的字.bmp','bmp');          %保存截取后的手写数字图像 [row,col]=size(I); r=fix(row/5); %为分25块做准备 c=fix(col/5); sum=0; %计算空白块数目 k=1; feature=[]; for i=1:r:5*r  %先从行开始计算     for j=1:c:5*c  %保持行不变,先计算列         for m=i:i+r-1             for n=j:j+c-1                 if I(m,n)==0                     sum=sum+1;  %每一块空白的像素块的数目                 end             end         end         data(k)=sum/(r*c);  %第k个特征分量,即第k块的空白率,k最大为25         sum=0;         k=k+1;     end     function y = rbfnettest( sample ) load template pattern; c=0; for i=1:10     for j=1:210         c=c+1;         p(:,c)=pattern(i).feature(:,j);     end end

 三、运行结果
 


【图像识别】RBF手写数字识别matlab源码的评论 (共 条)

分享到微博请遵守国家法律