Ich weiß immer noch nicht über eine LevelDB Datenbank meiner 2D-Datenmatrix für den Einsatz in caffe zu schaffen, aber ich schließlich von Problem gelöst:
ich mit Shai's proposal endete, um die Daten zu HDF5-Format zu konvertieren. Es ist ziemlich einfach HDF5-Datenbanken in Matlab zu lesen und zu schreiben. Sie müssen lediglich die bereits in Matlab implementierten Funktionen , h5read()
, und h5write()
verwenden.
Beispiel:
- die Datenänderungs-Typ in Ihrer caffe prototxt Datei auf "hdf5layer", wie folgt aus:
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
}
}
Verwendung Matlab HDF5 Datenbanken zu erstellen:
- Caffe: Ihre Eingaben Ausbildung Daten müssen eine 4-D-Matrix sein, wobei die letzten beiden Dimensionen gleich der Größe Ihrer 2D-Eingabedatenmatrix in Matlab sind.
- Beispiel: Nimm eine 2D-Matrix (Bild oder Einzelpräzisionsdaten) der Größe 54x24 (#Rows x Spalten)
- -> transponiere sie und staple sie in eine 24x54x1xN Matrix, wobei N die Anzahl der 2d Matrizen ist (Trainingsproben)
- Die Etiketten werden in einem 1xN Zeilenvektoren in Matlab.
- Jetzt ist Ihre hdf5 Datenbank erstellen:
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);
- Wie Sie sehen können, caffe erwartet eine hdf5 Datenbank mit den Variablen "Daten" und "label"
- eine Datenbank lesen:
Verwenden hdf5info(filename)
zu Holen Sie die Dataset-Namen in eine hdf5-Datenbank. Verwenden Sie dann data = h5read(filename,dataset)
, um den Datensatz zu lesen
Kennen Sie https://github.com/kyamagu/matlab-leveldb? – fuesika
Noch nicht. Hast du es selbst ausprobiert? Ich habe gerade versucht, eine leveldb-Datenbank damit zu laden. Laden scheint zu funktionieren, aber die Datenbank scheint leer zu sein. (Ich kann keine Schlüssel anzeigen und die Matlab-Variable ist nur 100 Bytes groß, während die reale Datenbank 2 GB ist). Meine Datenbank enthält die Dateien "data.mdb" und "lock.mdb". Vielleicht verwendet Caffe eine modifizierte Version von leveldb? – mcExchange
warum nicht stattdessen HDF5_DATA-Layer verwenden? flexibler ... – Shai