2017-01-10 2 views
1

Ich versuche, mit dem folgenden CodeVerwalten HDF5 Object Reference

import h5py 
labels_file = './sv/train/digitStruct.mat' 
f = h5py.File(labels_file) 
struct= f.values() 
names = struct[1].values() 
print(names[1][1].value) 

ich [<HDF5 object reference>] eine Matte Datei für die Street View Hausnummern (SVHN) Datensatz http://ufldl.stanford.edu/housenumbers/ in Python zu laden, aber ich brauche die eigentliche Zeichenfolge wissen

+0

sind Sie sicher, dass Sie es mit h5py lesen können? Welche Version von Matlab wurde verwendet? Siehe: [http://stackoverflow.com/questions/874461/read-mat-files-in-python](http://stackoverflow.com/questions/874461/read-mat-files-in-python) – fedepad

+0

es scheint die Datei wird geparst, wenn ich versuche, drucken (Namen [1]) Ich bekomme Sindico

+0

Haben Sie das Datenlayout überprüft? Verwenden Sie 'h5dump./Sv/train/digitStruct.mat' im Terminal, um etwas zu sehen, was gerade passiert. – fedepad

Antwort

1

Um eine Vorstellung von der Daten-Layout erhalten Sie

h5dump ./sv/train/digitStruct.mat 

aber es gibt auch andere Methoden wie visit oder 01.231.871 ausführen kann.

Eine gute Referenz, die Ihnen helfen können, und das scheint schon ein sehr ähnliches Problem angesprochen zu haben (wenn nicht gleich) hat vor kurzem die folgenden SO Post ist:
h5py, access data in Datasets in SVHN
Zum Beispiel das Snippet:

import h5py 
import numpy 

def get_name(index, hdf5_data): 
    name = hdf5_data['/digitStruct/name'] 
    print ''.join([chr(v[0]) for v in hdf5_data[name[index][0]].value]) 

labels_file = 'train/digitStruct.mat' 
f = h5py.File(labels_file) 
for j in range(33402): 
    get_name(j, f) 

wird den Namen der Dateien drucken. Ich bekomme zum Beispiel:

7459.png
7460.png
7461.png
7462.png
7463.png
7464.png
7465.png

Sie können von hier aus verallgemeinern.

+0

Es tut mir leid, dass die Frage aufgrund der [Zeichen nicht gut dargestellt wurde. Ich habe es repariert. Bitte schau es dir an, vielen Dank. – Sindico