资源简介
BP神经网络识别手写数字项目代码,matlab版本,附带图片识别包,直接使用。原理及代码分析:https://blog.csdn.net/huang_miao_xin/article/details/51364152
因为原程序和博主发的解析有点问题,花了点时间处理了,傻瓜式操作,直接下载解压放E盘。打开matlab即可运行。
代码片段和文件信息
V=double(rand(25664));
W=double(rand(6410));
delta_V=double(rand(25664));
delta_W=double(rand(6410));
% lf=0;用来看错误在哪一步的参考数据
yita=0.2;%缩放系数,有的文章称学习率
yita1=0.05;%我自己加的参数,缩放激活函数的自变量防止输入过大进入函数的饱和区,可以去掉体会一下变化
train_number=9;%训练样本中,有多少个数字,一共9个,没有0
train_num=30;%训练样本中,每种数字多少张图,一共100张
x=double(zeros(1256));%输入层
y=double(zeros(164));%中间层,也是隐藏层
output=double(zeros(110));%输出层
tar_output=double(zeros(110));%目标输出,即理想输出
delta=double(zeros(110));%一个中间变量,可以不管
%记录总的均方差便于画图
s_record=1:1000;
tic %计时
for train_control_num=1:1000 %训练次数控制,在调参的最后发现1000次其实有多了,大概400次完全够了
s=0;
%读图,输入网络
for number=1:train_number %train_number=9
ReadDir=[‘E:\BP\test_picture\‘];%读取样本的路径
for num=1:train_num %控制多少张 train_num=30
photo_name=[‘img00‘num2str(number) ‘-‘num2str(num‘%05d‘)‘.png‘];%图片名
photo_index=[ReadDirphoto_name];%路径加图片名得到总的图片索引
photo_matrix=imread(photo_index);%使用imread得到图像矩阵
photo_matrix=imresize(photo_matrix[1616]);
photo_matrix=uint8(photo_matrix<=230);%二值化,黑色是1
tmp=photo_matrix‘;
tmp=tmp(:);%以上两步完成了图像二维矩阵转变为列向量,256维,作为输入
%计算输入层输入
x=double(tmp‘);%转化为行向量因为输入层X是行向量,并且化为浮点数
%得到隐层输入
y0=x*V;
%激活
y=1./(1+exp(-y0*yita1));
%得到输出层输入
output0=y*W;
% lf=lf+1;之前用来看错误在哪一步的参考数据
output=1./(1+exp(-output0*yita1));
%计算预期输出
tar_output=double(zeros(110));
tar_output(number)=1.0;
%计算误差
%按照公式计算W和V的调整,为了避免使用for循环比较耗费时间,下面采用了直接矩阵乘法,更高效
delta=(tar_output-output).*output.*(1-output);
delta_W=yita*repmat(y‘110).*repmat(delta641);
tmp=sum((W.*repmat(delta641))‘);
tmp=tmp.*y.*(1-y);
delta_V=yita*repmat(x‘164).*repmat(tmp2561);
%计算均方差
s=s+sum((tar_output-output).*(tar_output-output))/10;
%更新权值
W=W+delta_W;
V=V+delta_V;
end
end
s=s/train_number/train_num %不加分号,随时输出误差观看收敛情况
train_control_num %不加分号,随时输出迭代次数观看运行状态
s_record(train_control_num)=s;%记录
end
toc %计时结束
plot(1:1000s_record);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-06-08 00:18 BP\
目录 0 2019-06-08 00:13 BP\test_picture\
文件 339 2009-08-14 16:18 BP\test_picture\img001-00001.png
文件 349 2009-08-14 16:18 BP\test_picture\img001-00002.png
文件 795 2009-08-14 16:18 BP\test_picture\img001-00003.png
文件 828 2009-08-14 16:18 BP\test_picture\img001-00004.png
文件 1063 2009-08-14 16:18 BP\test_picture\img001-00005.png
文件 1063 2009-08-14 16:18 BP\test_picture\img001-00006.png
文件 1147 2009-08-14 16:18 BP\test_picture\img001-00007.png
文件 1147 2009-08-14 16:18 BP\test_picture\img001-00008.png
文件 1613 2009-08-14 16:18 BP\test_picture\img001-00009.png
文件 1149 2009-08-14 16:18 BP\test_picture\img001-00010.png
文件 1716 2009-08-14 16:18 BP\test_picture\img001-00011.png
文件 1249 2009-08-14 16:18 BP\test_picture\img001-00012.png
文件 1234 2009-08-14 16:18 BP\test_picture\img001-00013.png
文件 1179 2009-08-14 16:18 BP\test_picture\img001-00014.png
文件 1320 2009-08-14 16:18 BP\test_picture\img001-00015.png
文件 1242 2009-08-14 16:18 BP\test_picture\img001-00016.png
文件 1118 2009-08-14 16:18 BP\test_picture\img001-00017.png
文件 990 2009-08-14 16:18 BP\test_picture\img001-00018.png
文件 1227 2009-08-14 16:18 BP\test_picture\img001-00019.png
文件 1241 2009-08-14 16:18 BP\test_picture\img001-00020.png
文件 1118 2009-08-14 16:18 BP\test_picture\img001-00021.png
文件 990 2009-08-14 16:18 BP\test_picture\img001-00022.png
文件 1227 2009-08-14 16:18 BP\test_picture\img001-00023.png
文件 1241 2009-08-14 16:18 BP\test_picture\img001-00024.png
文件 1158 2009-08-14 16:18 BP\test_picture\img001-00025.png
文件 1057 2009-08-14 16:18 BP\test_picture\img001-00026.png
文件 1251 2009-08-14 16:18 BP\test_picture\img001-00027.png
文件 1164 2009-08-14 16:18 BP\test_picture\img001-00028.png
文件 980 2009-08-14 16:18 BP\test_picture\img001-00029.png
............此处省略272个文件信息
评论
共有 条评论