mcE*_*nge 7 matlab leveldb caffe conv-neural-network matcaffe
我在Matlab中有一堆二维数据矩阵(没有图像数据,但有一些单精度数据).
有谁知道如何将2D matlab矩阵转换为caffe所需的leveldb格式来训练自定义神经网络?
我已经完成了关于如何训练图像(使用imagenet架构)和mnist(数字识别数据集)的教程.但是在后一个例子中,他们没有展示如何创建相应的数据库.在教程中,已经提供了数据库.
我仍然不知道创建一个我的2D数据矩阵的leveldb数据库用于caffe但我最终解决了问题:
我最终使用Shai的提议将数据转换为HDF5格式.在Matlab中读取和编写HDF5数据库非常容易.你只需要使用的功能hdf5info()
,h5read()
,h5create()
并且h5write()
这是在Matlab已经实施.
示例:
- 将caffe原型文件中的数据类型更改为"hdf5layer",如下所示:
name: "LeNet"
layer {
name: "mnist"
type: "HDF5Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
hdf5_data_param {
source: "/path/to/your/database/myMnist_train.txt"
batch_size: 64
}
}
Run Code Online (Sandbox Code Playgroud)
使用Matlab创建HDF5数据库:
- Caffe:您的输入训练数据必须是4-D矩阵,其中最后两个维度等于matlab中2D输入数据矩阵的大小.
- 示例:采用大小为54x24(#rows x cols)的2d矩阵(图像或单精度数据)
- - >转置它,并将其堆叠成24x54x1xN矩阵,其中N是2d矩阵的数量(训练样本)
-标签位于matlab中的1xN行向量中.
- 现在创建你的hdf5数据库:
h5create(['train.h5'],'/data',[24 54 1 length(trainLabels)]);
h5create(['train.h5'],'/label',[1 length(trainLabels)]);
h5write(['train.h5'],'/data',trainData);
h5write(['train.h5'],'/label',trainLabels);
Run Code Online (Sandbox Code Playgroud)
hdf5info(filename)
获得HDF5数据库中的数据集名称.然后data = h5read(filename,dataset)
用来读取数据集