将数据转换为 leveldb for caffe
Convert data to leveldb for caffe
我在Matlab中有一堆二维数据矩阵(没有图像数据,但有一些单精度数据)。
有谁知道如何将 2D matlab 矩阵转换为 caffe 训练自定义神经网络所需的 leveldb 格式?
我已经完成了关于如何训练图像(使用 imagenet 架构)和 mnist(数字识别数据集)的教程。但是在后一个示例中,他们没有展示如何创建相应的数据库。教程中已经提供了数据库。
我仍然不知道要为我的 2D 数据矩阵创建一个 leveldb 数据库以供在 caffe 中使用,但我最终解决了问题:
我最终使用 将数据转换为 HDF5 格式。在 Matlab 中读写 HDF5 数据库非常容易。您只需要使用已经在 Matlab 中实现的函数 hdf5info()
、h5read()
、h5create()
和 h5write()
。
示例:
- 将 caffe prototxt 文件中的数据类型更改为 "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
}
}
使用 Matlab 创建 HDF5 数据库:
- Caffe:你的输入训练数据必须是一个 4-D 矩阵,其中最后两个维度等于你在 matlab 中的 2D 输入数据矩阵的大小。
- 示例:采用大小为 54x24 (#rows x cols)
的二维矩阵(图像或单精度数据)
-> 将其转置,堆叠成一个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);
- 如您所见,caffe 需要一个带有变量 "data" 和 "label"
的 hdf5 数据库
- 正在读取数据库:
使用 hdf5info(filename)
获取 hdf5 数据库中的数据集名称。
然后使用data = h5read(filename,dataset)
读取数据集
我在Matlab中有一堆二维数据矩阵(没有图像数据,但有一些单精度数据)。
有谁知道如何将 2D matlab 矩阵转换为 caffe 训练自定义神经网络所需的 leveldb 格式?
我已经完成了关于如何训练图像(使用 imagenet 架构)和 mnist(数字识别数据集)的教程。但是在后一个示例中,他们没有展示如何创建相应的数据库。教程中已经提供了数据库。
我仍然不知道要为我的 2D 数据矩阵创建一个 leveldb 数据库以供在 caffe 中使用,但我最终解决了问题:
我最终使用 hdf5info()
、h5read()
、h5create()
和 h5write()
。
示例:
- 将 caffe prototxt 文件中的数据类型更改为 "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
}
}
使用 Matlab 创建 HDF5 数据库:
- Caffe:你的输入训练数据必须是一个 4-D 矩阵,其中最后两个维度等于你在 matlab 中的 2D 输入数据矩阵的大小。
- 示例:采用大小为 54x24 (#rows x cols)
的二维矩阵(图像或单精度数据)
-> 将其转置,堆叠成一个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);
- 如您所见,caffe 需要一个带有变量 "data" 和 "label" 的 hdf5 数据库
- 正在读取数据库:
使用hdf5info(filename)
获取 hdf5 数据库中的数据集名称。 然后使用data = h5read(filename,dataset)
读取数据集