本文主要是根据《matlab手写神经网络实现识别手写数字》博客中的代码进行试验。由于没有数据集,所以采用了MNIST数据集进行代码的运行。数据集不同所以需要对代码进行微小改动。
简介
数据处理:4000张作为训练样本,1000张作为测试样本;
图像大小:图片的灰度值矩阵(28,28);
图像名称:由标签和顺序号组成。标签_顺序号.bmp
训练样本:每个数字的图像名称的顺序号是从0-399,各400个。
测试样本:每个数字的图像名称的顺序号是从401-500,各100个。
标签制作
标签格式:
训练数据集中前400个标签都是[1,0,0,0,0,0,0,0,0,0]代表数字0,401-800个标签都是[0,1,0,0,0,0,0,0,0,0]代表数字2,其余类推。这也就是所谓的onehot
由于数据集不同,图像的格式也不一样等因素,需要对代码稍微做修改,具体如下:
制作label时遇到的障碍,xlswrite()函数在写入矩阵时对矩阵大小有限制,一定要小心,因为我的电脑安装的是2003,所以无法对4000列数据直接写入,只好行列互换后再存储,代码将生成两个xsl文件,分别是label.xsl和label2.xsl,分别是训练数据和测试数据的标签。
增加一个label_create.m文件,用来新建标签文件。
label_create.m代码:
% 创建Excel存储label
% 根据图片的名字,例如:3_101.bmp,第一个数值是标签,第二个是图片数。
% 为了转换成神经网络的标签,0-9这10个标签应