Caffe で使用する 2D データ マトリックスの leveldb データベースを作成する方法はまだわかりませんが、最終的に問題を解決しました。Shaiの提案
を
使用してデータを 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: 入力トレーニング データは、最後の 2 つの次元が matlab の 2D 入力データ マトリックスのサイズに等しい 4-D マトリックスである必要があります。
- 例: サイズ 54x24 (#rows x cols) の 2 次元行列 (画像または単精度データ) を取得
します。 -> 転置し、24x54x1xN 行列にスタックします。ここで、N は 2 次元行列 (トレーニング サンプル) の数です
。ラベルは、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 データベースを想定しています。
- データベースの読み取り: hdf5 データベース内のデータセット名を取得するために
使用します。hdf5info(filename)
次にdata = h5read(filename,dataset)
、データセットを読み取るために使用します