如何在 Caffe 中使用不同于图像的数据?
How to use data different than images with Caffe?
我看过很多例子,展示了如何在 Caffe 中插入图像数据进行模型训练。
我正在尝试使用非图像数据训练模型。我可以将它重塑为矩阵或向量(对于每个示例),但我不明白如何让我的 Caffe 网络读取它。
我知道 Caffe 可以使用 lmdb/hdf5 数据库,我还可以使用 Python 数据层。
我想 Python 数据层将是我的最佳选择。有人可以提供一个示例,说明如何在 Python 中创建某种数组并将其用作 Caffe 模型的训练数据吗?
您不需要为简单的矢量输入创建 python 层。 HDF5 层可能是最容易使用的。只需使用您喜欢的工具创建 HDF5 文件(参考 this for creating HDF5 using matlab, or this 使用 python 创建)
这两个例子都相当容易理解。 matlab 示例为您提供了更 高级 版本的 HDF5 文件创建——就像创建批处理和所有内容一样——但在其核心你只需要调用
store2hdf5(filename, data, labels) %others are optional
同样,python 示例也涵盖了完整的示例,您可能需要也可能不需要。从本质上讲,创建 HDF5 文件很简单。
import h5py
with h5py.File('filename.h5', 'w') as f:
f['data'] = your_data
f['label'] = your_labels
您可以轻松地使用在HDF5数据层中创建的文件,如下所示。您只需创建一个包含您要使用的 HDF5 文件列表的文本文件。
layer {
name: "data"
type: "HDF5Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
hdf5_data_param {
source: "path_to_text_file_containing_list_of_HDF5_Files.txt" #
batch_size: 128
shuffle: true
}
}
我看过很多例子,展示了如何在 Caffe 中插入图像数据进行模型训练。
我正在尝试使用非图像数据训练模型。我可以将它重塑为矩阵或向量(对于每个示例),但我不明白如何让我的 Caffe 网络读取它。
我知道 Caffe 可以使用 lmdb/hdf5 数据库,我还可以使用 Python 数据层。 我想 Python 数据层将是我的最佳选择。有人可以提供一个示例,说明如何在 Python 中创建某种数组并将其用作 Caffe 模型的训练数据吗?
您不需要为简单的矢量输入创建 python 层。 HDF5 层可能是最容易使用的。只需使用您喜欢的工具创建 HDF5 文件(参考 this for creating HDF5 using matlab, or this 使用 python 创建)
这两个例子都相当容易理解。 matlab 示例为您提供了更 高级 版本的 HDF5 文件创建——就像创建批处理和所有内容一样——但在其核心你只需要调用
store2hdf5(filename, data, labels) %others are optional
同样,python 示例也涵盖了完整的示例,您可能需要也可能不需要。从本质上讲,创建 HDF5 文件很简单。
import h5py
with h5py.File('filename.h5', 'w') as f:
f['data'] = your_data
f['label'] = your_labels
您可以轻松地使用在HDF5数据层中创建的文件,如下所示。您只需创建一个包含您要使用的 HDF5 文件列表的文本文件。
layer {
name: "data"
type: "HDF5Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
hdf5_data_param {
source: "path_to_text_file_containing_list_of_HDF5_Files.txt" #
batch_size: 128
shuffle: true
}
}