Wie zu ernähren caffe multi-label-Daten im HDF5-format?

Will ich mit caffe mit einem Vektor-label, nicht integer. Ich habe einige Antworten, und es scheint im HDF5 ist ein besserer Weg. Aber dann bin ich stucked mit Fehler wie:

accuracy_layer.cpp:34] Check failed: outer_num_ * inner_num_ == bottom[1]->count() (50 und 200) Anzahl der Etiketten, die müssen übereinstimmen, Anzahl der Vorhersagen; z.B., wenn label-Achse == 1 ist, und Vorhersage-Form ist (N, C, H, W), label count (Anzahl der Etiketten) müssen N*H*W, mit integer-Werten in {0, 1, ..., C-1}.

mit im HDF5 erstellt:

f = h5py.File('train.h5', 'w')
f.create_dataset('data', (1200, 128), dtype='f8')
f.create_dataset('label', (1200, 4), dtype='f4')

Mein Netzwerk wird erzeugt durch:

def net(hdf5, batch_size):
    n = caffe.NetSpec()
    n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)
    n.ip1 = L.InnerProduct(n.data, num_output=50, weight_filler=dict(type='xavier'))
    n.relu1 = L.ReLU(n.ip1, in_place=True)
    n.ip2 = L.InnerProduct(n.relu1, num_output=50, weight_filler=dict(type='xavier'))
    n.relu2 = L.ReLU(n.ip2, in_place=True)
    n.ip3 = L.InnerProduct(n.relu1, num_output=4, weight_filler=dict(type='xavier'))
    n.accuracy = L.Accuracy(n.ip3, n.label)
    n.loss = L.SoftmaxWithLoss(n.ip3, n.label)
    return n.to_proto()

with open(PROJECT_HOME + 'auto_train.prototxt', 'w') as f:
f.write(str(net('/home/romulus/code/project/train.h5list', 50)))

with open(PROJECT_HOME + 'auto_test.prototxt', 'w') as f:
f.write(str(net('/home/romulus/code/project/test.h5list', 20)))

Es scheint, ich sollte erhöhen, label-Nummer und die Dinge in einem integer sondern als array, aber wenn ich das mache, caffe klagt Anzahl der Daten und die Beschriftung ist nicht gleich, dann existiert.

So, was ist das richtige format zu füttern multi-label-Daten?

Außerdem bin ich also Fragen, warum niemand einfach nur schreiben das Daten-format wie Sie im HDF5-Karten zu caffe-blobs?

sollte nicht data von der Art f4?
Wechsel auf die f4-Taste ändert nicht den Fehler.
Wahrscheinlich eine wertvolle Ressource: stackoverflow.com/questions/33112941/...
Danke, dass der Verlust Ebene ist das, was ich brauche.

InformationsquelleAutor Romulus Urakagi Ts'ai | 2015-10-15

Schreibe einen Kommentar