Für ein tief learning Modell muss ich meine Daten durch Reihen laden. Für jede Epoche (vollständige Iteration über alle Daten) muss jede Zeile einmal übergeben werden, aber es ist wichtig, dass die Daten dem Algorithmus in zufälliger Reihenfolge zugeführt werden. Mein Datensatz ist zu groß, um ihn vollständig im Speicher zu lesen. Es sind Sequenzdaten mit variabler Länge, das Eingabeformat kann geändert werden, da es sich um einen Dump von einem Cluster handelt, den mein anderes Skript ausgibt. Momentan sind es einige Meta-Informationen pro Zeile und dann werden die Sequenzen durch ';' geteilt.Gelesene zufällige Stücke von der Textakte
Meine aktuelle Lösung ist ein Generator, der alle Zeilennummern mischt, sie in 4 Teile zerlegt und die Datei liest, wobei die Zeilen analysiert werden, die den Chunk-Zeilennummern entsprechen. Es ergibt Sequenzen in Stapelgröße, bis nichts mehr übrig ist, und analysiert dann den nächsten Teil der Zeilennummern. Es funktioniert, aber ich denke, es könnte eine bessere Lösung geben. Wer hat einen besseren Workflow? Dies ist ein Problem, auf das ich regelmäßig stoße. Das Problem ist, dass ich die Datei für jeden Chunk, jede Epoche vollständig scanne. Obwohl ich es mit nur 4 Stücken arbeiten kann, mit 30 Epochen, die 120 mal eine große Datei lesen.
* "Es ist wichtig, dass die Daten in einem zufälligen zugeführt wird Reihenfolge zum Algorithmus "* Sequential Disk I/O APIs wurden nicht für diese Art von verrückt entwickelt. - Signed, jemand, der nichts über "Deep Learning" weiß –
Ich würde einen Satz der Datei mit 'set (file_obj)' machen. Verwenden Sie dann 'random.sample', um die richtige Anzahl an zufälligen Elementen zu erhalten. – zondo
@zondo lädt nicht den gesamten Dateiinhalt in den Speicher? –