-----------------更新日志-----------------
20:33 2017/1/28 提供MATLAB生成loss曲线的方法
-----------------更新日志-----------------
如果遇到一些问题,可以在这里找下是否有解决方案。本文内容主要分为两部分,第一部分介绍基于caffe的回归分析,包括了数据准备、配置文件等;第二部分介绍了在MATLAB上进行的可视化。(话说本人最近有个课题需要做场景分类,有兴趣可以共同探讨一下)。
Preparation
预装好caffe on windows,并编译成功MATLAB接口。
通过caffe进行回归分析
通过caffe进行回归分析,在实验上主要分成HDF5数据准备、网络设计、训练、测试。该实验已经有网友做过,可以参考:http://www.cnblogs.com/frombeijingwithlove/p/5314042.html
或者查看转载的副本(http://blog.youkuaiyun.com/xiaoy_h/article/details/54731122)。但不同的是,本文在实验中某些必要的环节均通过MATLAB实现,而不是Python。下文仅对不同的内容进行介绍。
通过MATLAB准备HDF5数据
MATLAB是正经的MATLAB,比如你的数据含有35个输入变量,共10000个样本;先在MATLAB中创建一个变量,将数据(在此之间别忘了先做scaling)拷贝进去,将得到一个10000x 35的变量,当然标签变量就是10000 x 1的啦;最终得到train_x(10000 x 35)、train_y(10000 x 1)、test_x(600 x 35)、test_y(600 x 1)共四个变量,将他们保存到mat文件中,比如data.mat文件。
然后,通过如下脚本实现h5数据的转换(该脚本修改自CAFFE_ROOT\matlab\hdf5creation\目录下的demo.m):
%% WRITING TO HDF5
filename = 'train.h5';
load 'data.mat';
num_total_samples = size(train_x,1); %获取样本总数
data_disk = train_x';
label_disk = train_y';
chunksz = 100; %数据块大小
created_flag = false;
totalct = 0;
for batchno=1:num_total_samples/chunksz
fprintf('batch no. %d\n', batchno);
last_read = (batchno-1)*chunksz;
% 在dump到hdf5文件之前模拟内存中放置的最大数据量
batchdata = data_disk(:,last_read+1:last_read+chunksz);
batchlabs = label_disk(:,last_read+1:last_read+chunksz);
% 存入hdf5
startloc = struct('dat',[1,totalct+1], 'lab',[1,totalct+1]);
curr_dat_sz = store2hdf5(filename, batchdata,batchlabs, ~created_flag, startloc, chunksz);
created_flag = true; %设置flag为了只创建一次文件
totalct = curr_dat_sz(end); %更新数据集大小 (以样本数度量)
end
%显示所存储HDF5文件的结构体
h5disp(filename);
%创建HDF5_DATA_LAYER中使用的list文件
FILE = fopen('train.txt', 'w');
fprintf