2015-04-09 14 views
12

Verilerin Caffe'de nasıl yorumlandığını anlamaya çalışıyorum.Caffe: Bloblarda beklenen lmdb veri yapısını anlama

layers { 
    name: "mnist" 
    type: DATA 
    data_param { 
    source: "mnist_train_lmdb" 
    backend: LMDB 
    batch_size: 64 
    scale: 0.00390625 
    } 
    top: "data" 
    top: "label" 
} 

Şimdi mnist_train_lmdb baktı ve (onaltılık gösterilir) girişlerden birini atmış:

Bunun için ben girdi verileri tanımına baktığımızda Minst Tutorial bir göz attık
0801101C181C229006 
00000000000000000000000000000000000000000000000000000000 
00000000000000000000000000000000000000000000000000000000 
00000000000000000000000000000000000000000000000000000000 
00000000000000000000000000000000000000000000000000000000 
00000000000000000000000000000000000000000000000000000000 
00000000000000000000000000000000000000000000000000000000 
00000000000000000000000000000000000000000000000000000000 
00000000000054B99F973C2400000000000000000000000000000000 
000000000000DEFEFEFEFEF1C6C6C6C6C6C6C6C6AA34000000000000 
00000000000043724872A3E3FEE1FEFEFEFAE5FEFE8C000000000000 
000000000000000000000011420E4343433B15ECFE6A000000000000 
00000000000000000000000000000000000053FDD112000000000000 
000000000000000000000000000000000016E9FF5300000000000000 
000000000000000000000000000000000081FEEE2C00000000000000 
000000000000000000000000000000003BF9FE3E0000000000000000 
0000000000000000000000000000000085FEBB050000000000000000 
00000000000000000000000000000009CDF83A000000000000000000 
0000000000000000000000000000007EFEB600000000000000000000 
00000000000000000000000000004BFBF03900000000000000000000 
0000000000000000000000000013DDFEA60000000000000000000000 
00000000000000000000000003CBFEDB230000000000000000000000 
00000000000000000000000026FEFE4D000000000000000000000000 
00000000000000000000001FE0FE7301000000000000000000000000 
000000000000000000000085FEFE3400000000000000000000000000 
000000000000000000003DF2FEFE3400000000000000000000000000 
0000000000000000000079FEFEDB2800000000000000000000000000 
0000000000000000000079FECF120000000000000000000000000000 
00000000000000000000000000000000000000000000000000000000 
2807 

(I hattı 7 rakamı görmek mümkün burada geçtiniz ekledik.)

Şimdi benim sorum, bu biçim açıklanmıştır ? Veya ilk 36 baytın bir çeşit başlık ve son 8 baytın bazı etiket yazışmaları olduğu tanımlandığında nereye koyulur?

Kendi verilerimi oluşturma konusunda nasıl giderim? Ne Blob Tutorial ne de Layers Definition, gereken biçimler hakkında çok fazla bilgi vermiyor. Amacım görüntü verilerini kullanmamak, ancak zaman serisi

Teşekkürler!

cevap

15

Bu protokol tamponlarının buraya gelmesi gerektiğini anladım. Bu nedenle, caffe.proto'da tanımlanan bazı türlere karşı seri hale getirmeye çalıştım. Yani cevap basitçe

{Caffe.Datum} 
    Channels: 1 
    Data: {byte[784]} 
    Encoded: false 
    FloatData: Count = 0 
    Height: 28 
    Label: 7 
    Width: 28 

:

Veri mükemmel uyum gibi görünüyor Btw caffe.proto

başına tanımlanan O daktilo Mesela bir 'Datum' bir tefrika gösterimi var .

: ingilizce benim anadilim değil beri ilk "Veri"

Kendi verilerini kullanarak söz konusu, o kadar Yapılandırılma "veri" bir tekil hali izler olduğunu fark etmek zorunda kaldı Veriler için geleneksel blob boyutları N sayısı K x yükseklik H x genişliğindedir. Blob belleği düzende sıra büyüktür, bu nedenle son /en sağdaki boyut en hızlı şekilde değişir. Örneğin, (n, k, h, w) dizinindeki değer fiziksel olarak endekste ((n * K + k) * H + h) * W + w.

referans

+2

"Veri" veri bireysel parçası = - – Raffael

+0

Bir C++ programında bir LMDB dosyası oluşturmak için yönetmek mi bir vaka gibi? Sorunu anladığımdan emin değilim. – user3728501

+0

C# değil C++ kullanıyordum, ancak yukarıdaki anlaşmayı anladıktan sonra, bunu LMDB'ye bağlamak oldukça kolaydı – Sam7

2

Ben senin ikinci soruyu cevaplamak için deneyebilirsiniz için Blobs, Layers, and Nets: anatomy of a Caffe model bakınız. Caffe sadece lmdb, hdf5 vb. Gibi bir dizi seçili formatta veri aldığından, verilerinizi bu formatlara dönüştürmek (veya sentetik veri durumunda üretmek) en iyisidir. Aşağıdaki linkler bu konuda size yardımcı olabilir. Python'da import hdf5 ile sorun yaşıyorsanız, this sayfasına bakabilirsiniz.

Creating an LMDB file in Python

Writing an HDF5 file in Python

HDF5 more examples

İlgili konular