7

私はMatlabにたくさんの2Dデータ行列を持っています(画像データはありませんが、いくつかの単精度データがあります)。

カスタムニューラルネットワークをトレーニングするためにカフェが必要とするleveldb形式に2D matlab行列を変換する方法を知っている人はいますか?

画像 (imagenet アーキテクチャを使用) と mnist (数字認識データセット) のトレーニング方法に関するチュートリアルは既に行いました。ただし、後者の例では、それぞれのデータベースを作成する方法を示していません。チュートリアルでは、データベースは既に提供されています。

4

1 に答える 1

6

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)、データセットを読み取るために使用します
于 2015-06-16T13:34:33.200 に答える