2017-02-16 2 views
0

Ich brauche Hilfe/Meinung über den Eingang für maschinelles Lernen.hdf5 Dateien mit Matrix N x M als Eingabe für maschinelles Lernen mit Keras

Ich habe eine hdf5 Datei

combined.h5 

, die mehrere Datensatzes enthält, in dem jeder Datensatz enthält Matrix von 4 × 125 (4 Zeilen- und 125-Säule)

ich habe auf gesucht, wie die hdf5 auf Eingangs Datei, die eine Matrix als Eingabe für maschinelles Lernen enthält, aber keine Antwort/Beispiel gefunden hat, die für mich als Referenz gut genug ist. Unten ist mein modifizierte Skript

import numpy as np 
import h5py 
from keras.models import Sequential 
from keras.layers import Dense 

seed = 7 
np.random.seed(seed) 

dataset = h5py.File('combined.h5', 'r') #has 5 dataset 

X = dataset #input 
Y = ["A","CFL","SS","G","FF"] #output 

model = Sequential() 
model.add(Dense(125, input_dim=125, init='normal', activation='relu')) 
model.add(Dense(5, init='uniform', activation='sigmoid')) 

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 

model.fit(X, Y, nb_epoch=150, batch_size=10) 

scores = model.evaluate(X, Y) 

print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) 

ich dieses Skript lief und bekam wie Fehler unter

Meine Frage ist, wie die hdf5 Dateien in Form einer Matrix als Eingangsdaten für maschinelles Lernen enthält Datensätze zu laden?

* Zusätzliche Frage, ich möchte die Ausgabe für jeden Datensatz verknüpfen. Zum Beispiel, Datensatz 1 hat Ausgangsdaten von "A", Datensatz 2 hat Ausgangsdaten von "CFL" und so weiter ... Gibt es einen geeigneten Weg, dies zu tun, oder ist es genug mit dem, was ich in das Skript geschrieben habe?

Vielen Dank für Ihre Hilfe.

Antwort

0

Diese für jeden Namen-Datensatz sein sollte:

X = dataset['dataset_name'][:] #input 

die Namen des Datensatzes, um herauszufinden, Sie das folgende Skript verwenden:

for key in dataset.keys(): 
    print key 

Hier nehmen Sie die vollständigen Datensatz aus der Datei. Wenn Sie die Datenmenge nicht teilen, erhalten Sie nur einen Zeiger auf das h5py-Datenmengenobjekt. Mit dem Slice-Operator extrahieren Sie das numpy Array. (http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data)

Sie müssen sich nur Ihre hdf5-Datei vorstellen, um wie eine Ordnerstruktur zu sein, müssen Sie die Ordnerstruktur durchlaufen, um zu Ihren Daten zu gelangen. Dann können Sie die Daten mit Slicing laden.

+0

Muss ich 'dataset_name' durch den Namen des Datasets in der hdf5-Datei ersetzen? Kannst du mehr dazu sagen? Wenn ich zum Beispiel Datensätze mit dem Namen'AA', 'BB' habe, muss ich so schreiben ->' X = Dataset ['AA'] [:] 'für Dataset' AA' und 'X = Dataset [ 'BB'] [:] 'für den Datensatz' BB' jeweils? Oder ist es 'X = Dataset ['Dataset_Name'] [:]' genug, um alle Datasets in der hdf5-Datei zu adressieren? – Fang

+0

Dataset_name ist ein Platzhalter für einen tatsächlichen Dataset-Namen wie AA. –

Verwandte Themen