2015-07-28 6 views
6

Ich fing an zu lernen, wie man Theano mit Lasagne verwendet, und begann mit dem Mnist Beispiel. Nun möchte ich mein eigenes Beispiel ausprobieren: Ich habe eine Datei namens train.csv, in der jede Zeile mit 0 oder 1 beginnt, was die richtige Antwort darstellt, gefolgt von 773 0s und 1s, die die Eingabe darstellen. Ich habe nicht verstanden, wie ich diese Datei auf die gewünschten Nummernfelder in der load_database() -Funktion umwandeln kann. das ist der Teil von der ursprünglichen Funktion für die mnist Datenbank:numpy Array aus CSV-Datei für Lasagne

... 

with gzip.open(filename, 'rb') as f: 
    data = pickle_load(f, encoding='latin-1') 

# The MNIST dataset we have here consists of six numpy arrays: 
# Inputs and targets for the training set, validation set and test set. 
X_train, y_train = data[0] 
X_val, y_val = data[1] 
X_test, y_test = data[2] 

... 

# We just return all the arrays in order, as expected in main(). 
# (It doesn't matter how we do this as long as we can read them again.) 
return X_train, y_train, X_val, y_val, X_test, y_test 

und ich brauche die X_train (der Eingang) und die y_train (Anfang jeder Zeile) aus meiner CSV-Dateien zu erhalten.

Danke!

Antwort

1

können Sie numpy.genfromtxt() oder numpy.loadtxt() wie folgt verwenden:

from sklearn.cross_validation import KFold 

Xy = numpy.genfromtxt('yourfile.csv', delimiter=",") 

# the next section provides the required 
# training-validation set splitting but 
# you can do it manually too, if you want 

skf = KFold(len(Xy)) 

for train_index, valid_index in skf: 
    ind_train, ind_valid = train_index, valid_index 
    break 

Xy_train, Xy_valid = Xy[ind_train], Xy[ind_valid] 

X_train = Xy_train[:, 1:] 
y_train = Xy_train[:, 0] 

X_valid = Xy_valid[:, 1:] 
y_valid = Xy_valid[:, 0] 


... 

# you can simply ignore the test sets in your case 
return X_train, y_train, X_val, y_val #, X_test, y_test 

Im wir Code-Schnipsel des Satzes test vorbei ignoriert.

Jetzt können Sie Ihr Dataset in das Hauptmodul oder Skript oder was auch immer importieren, aber achten Sie darauf, auch alle Testteile daraus zu entfernen.

Oder alternativ können Sie einfach die gültigen Sätze wie test Satz übergeben:

# you can simply pass the valid sets as `test` set 
return X_train, y_train, X_val, y_val, X_val, y_val 

Im letzteren Fall müssen wir uns über die wichtigsten Module kümmern sich nicht Abschnitte mit dem ausgenommen test Satz beziehen , aber als Punkte (wenn vorhanden) erhalten Sie die validation scores zweimal so wie test scores.

Hinweis: Ich weiß nicht, welches Beispiel das ist, aber wahrscheinlich, nachdem Sie Ihre Daten wie oben vorbereitet haben, müssen Sie weitere Änderungen in Ihrem Trainermodul vornehmen, um Ihren Daten zu entsprechen. Zum Beispiel: Eingabeform von Daten, Ausgabeform, d. H. Die Anzahl von Klassen, z. in Ihrem Fall ist der ehemalige 773, letzterer ist 2.