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?
ü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
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
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