Io ancora non so per creare un database LevelDB delle mie matrici di dati 2D per l'uso in caffe ma alla fine ho risolto dal problema:
ho finito per usare Shai's proposal per convertire i dati in formato HDF5. È abbastanza facile leggere e scrivere database HDF5 in Matlab. Devi solo usare le funzioni hdf5info()
, h5read()
, h5create()
e h5write()
che sono già implementate in Matlab.
Esempio:
- Modificare il tipo di dati nel file caffe prototxt a "hdf5layer", in questo modo:
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
}
}
Usa Matlab per creare database HDF5:
- Caffe: La vostra formazione in ingresso i dati devono essere una matrice 4-D in cui le ultime due dimensioni sono uguali alle dimensioni della matrice di dati di input 2D in MATLAB.
- Esempio: prendere una matrice 2d (immagine o dati di precisione singoli) di dimensione 54x24 (#rows x cols)
- -> trasporre e impilarlo in una matrice 24x54x1xN, dove N è il numero di matrici 2d (campioni di addestramento)
- Le etichette si trovano in vettori di riga 1xN in matlab.
- Ora crea il database 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);
- Come si può vedere, caffe aspetta un database HDF5 con le variabili "dati" e "etichetta"
- lettura di un database:
Usa hdf5info(filename)
a ottenere i nomi dei set di dati all'interno di un database hdf5. Quindi utilizzare data = h5read(filename,dataset)
per leggere il dataset
Sai https://github.com/kyamagu/matlab-leveldb? – fuesika
Non ancora. Hai provato tu stesso? Ho appena provato a caricare un database di leveldb con esso. Il caricamento sembra funzionare correttamente, ma il database sembra essere vuoto. (Non riesco a visualizzare alcun tasto e la variabile MATLAB ha solo 100 byte mentre il vero database è 2Gb). Il mio database incorpora i file "data.mdb" e "lock.mdb". Forse caffe usa una versione modificata di leveldb? – mcExchange
perché non utilizzare invece il layer HDF5_DATA? più flessibile ... – Shai