2016-10-11 6 views
0

Ich versuche ein neuronales Netzwerk mit Keras zu trainieren. Mein Trainingssatz besteht aus Millionen spärlicher Vektoren.Training Keras neuronales Netzwerk mit spärlichen Daten

Um die Ausbildung durchzuführen, benutze ich die model.fit() Funktion:

model.fit(X_train, y_train, ...) 

jedoch fit() arbeitet mit dichten Daten. Deshalb, um es funktionieren zu lassen - bevor ich das Netzwerk mit den Vektoren füttere - wandle ich sie in dichte Vektoren um.

Das Problem ist, dass nach der Transformation die Daten zu groß werden und nicht mehr in den RAM passen.

Ich weiß, dass ich eine batch_generator verwenden kann, um das Netzwerk in Datenstückchen zu füttern. Allerdings, wenn ich das tue, bekomme ich Ergebnisse (auf dem Test-Set), die schlimmer sind als ohne die batch_generator auf nur Teil der Daten (so dass es passt der RAM).

Meine Frage ist: Gibt es eine Möglichkeit, ein Keras neuronales Netzwerk mit spärlichen Vektoren zu trainieren, ohne sie in dichte umzuwandeln?

+2

über einen Generator Montage sollten die gleichen Ergebnisse wie Einbau direkt auf der x/Ertrag y-Arrays. Vielleicht ist das, was Sie als bessere Ergebnisse wahrnehmen, ein Fall von Überanpassung (auf der kleinen Teilmenge der Daten). – aleju

+0

Ich benutze ein anderes Set zum Testen und es ist ziemlich groß. Warum sollte ein Overfit auf dem Testgerät besser funktionieren? Es macht keinen Sinn ... – Noamiko

+0

Deine Post hat nicht klar gemacht, ob du die Aufführung im Zug oder auf einem Testgerät meinst. Abgesehen davon, 'fit()' standardmäßig mischt Ihre Daten, stellen Sie sicher, dass Ihr Generator das auch irgendwann tut. – aleju

Antwort

0

Wenn Sie Lasagne statt Keras verwenden können, können Sie this Multilayer Perceptron class betrachten, die sehr konfigurierbar und einfach zu lesen ist.

unterstützt sowohl dicht und dünn besetzte Matrizen

unterstützt Drop-out und verborgene Schicht

vollständige Wahrscheinlichkeitsverteilung Unterstützt statt One-Hot-Etikett so Multilabel Ausbildung unterstützt.

Unterstützt Scikit-Learn wie API (fit, vorherzusagen, Genauigkeit, etc.)

ist sehr einfach zu konfigurieren und modifizieren