2015-06-05 16 views
7

Matlab'da bir grup 2B veri matrisine sahibim (görüntü verisi yok, ancak bazı tek duyarlıklı veriler).Caffe için seviye db'ye veri dönüştürme

2D matlab matrisleri, caffe'nin özel bir sinir ağını eğitmesi için gerekli olan leveldb biçimine dönüştürmeyi bilen var mı?

Zaten resim üzerinde (imagenet mimarisini kullanarak) ve mnist (rakam tanıma veri kümesi) üzerinde nasıl eğitileceğini öğrettim. Bununla birlikte, son örnekte, ilgili veritabanının nasıl oluşturulacağını göstermediler. Öğreticide veri tabanı zaten sağlanmıştır.

+0

Veritabanını okumak için data = h5read(filename,dataset)'u kullanın https://github.com/kyamagu/matlab-leveldb? – fuesika

+0

Henüz değil. Kendin denedin mi? Ben sadece onunla bir leveldb veritabanı yüklemeyi denedim. Yükleme iyi çalışıyor gibi görünüyor, ancak veritabanı boş görünüyor. (Ben herhangi bir anahtar görüntüleyemiyorum ve matlab değişken gerçek veritabanı 2Gb iken sadece 100 byte büyüktür). Veritabanım "data.mdb" ve "lock.mdb" dosyalarını içerir. Belki de caffe, leveldb'nin değiştirilmiş bir sürümünü kullanıyor? – mcExchange

+1

neden HDF5_DATA katmanını kullanmıyor? daha esnek ... – Shai

cevap

6

Hala caffe kullanım için benim 2D karekodların bir LevelDB veritabanı oluşturmak için bilmiyorum ama sonunda sorun çözülür:
Ben HDF5 biçimine verileri dönüştürmek için Shai's proposal kullanarak sona erdi. Matlab'da HDF5 veritabanlarını okumak ve yazmak oldukça kolaydır. Sadece Matlab'da zaten uygulanmış olan hdf5info(), h5read(), h5create() ve h5write() işlevlerini kullanmanız gerekir.

Örnek:
- Bu gibi, caffe prototxt dosyasına "hdf5layer" veri türünü değiştirme: -: Sizin giriş eğitimi:

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 
    } 
} 

Kullanım Matlab oluşturmak için HDF5 veritabanları Caffe
veri, son iki boyutun matlabdaki 2B giriş veri matrisinizin boyutuna eşit olduğu bir 4-D matris olmalıdır.
- Örnek: 54x24 (#rows x cols) boyutunda bir 2d matris (resim veya tek duyarlıklı veri) alın (0 x - -> onu dönüştürün ve bir Nx 2d matrisinin sayısı olan bir 24x54x1xN matrisine koyun. eğitim örnekleri)
- Etiketler matlabda 1xN satır vektörlerinde.
- Şimdi hdf5 veritabanı oluşturmak:
Kullanım hdf5info(filename) için:

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); 
  • Gördüğünüz gibi, caffe bir veritabanı okuma değişkenler "veri" ve "etiket"
  • ile hdf5 veritabanını bekliyor Bir hdf5 veritabanında veri kümesi isimlerini alın. Sonra da
+0

Mükemmel! BTW, 'h5' dosya adlarını içerecek şekilde/yol/to/kendi/veritabanı/myMnist_train.txt' dosyasına ihtiyacınız vardır, ör. Satır içerme: train.h5. – Shai

+0

Matrisleri, bunları kaydetmeden önce ortalama matrise göre çıkarmanız mı gerekiyor? – mad

+0

Verileriniz, bu nedenle nasıl dönüştürmek istediğinizi şimdi yapmanız gerekir;). Genel olarak konuşulan ortalama çıkarma ve standart sapma ile bölünme her zaman sayısal optimizasyonu geliştirmelidir. – mcExchange

İlgili konular