关于反向传播我实在讲不透,自己把公式推算一遍比较好。
既然已经把BP成功搭建起来了,那么接下来做什么呢?接下来把数据集分割一下,一般来说,训练集数据集分割比是2:1的样子差不多。我们仍然用matlab实现分割,既然我们已经知道了如何读取图像,那么存入图像也是简单的:
imwrite(img, path);
我们可以把前2/3作为训练集放到一个文件夹,后1/3作为测试集放入另一个文件夹。新建一个脚本move.m,在其中写入如下代码:
path = '101_ObjectCategories';
namelist = dir(path); % 所有名字的集合
name_len = length(namelist);
for i = 1:name_len
if namelist(i).name == '.',continue,end
namelist(i).name
imglist = dir(strcat(path,'\',namelist(i).name)); % 一个名字下的所有图片的集合
img_len = length(imglist);
for j = 1:img_len
if imglist(j).name == '.',continue,end
img = imread(strcat(path,'\',namelist(i).name,'\',imglist(j).name));
if(j/img_len < 2/3)
if ~exist(strcat('train_set\',namelist(i).name),'dir')
mkdir(strcat('train_set\',namelist(i).name));
end
imwrite(img, strcat('train_set\',namelist(i).name,'\',imglist(j).name));
else
if ~exist(strcat('test_set\',namelist(i).name),'dir')
mkdir(strcat('test_set\',namelist(i).name));
end
imwrite(img, strcat('test_set\',namelist(i).name,'\',imglist(j).name));
end
end
end
代码简单不解释,运行时间可能有1分钟左右。