5

Ich habe eine .NET-Framework unter Verwendung eines neuronalen Netzes zu trainieren, und meine Datensatz ist wirklich groß, mit einer großen Anzahl von Eingängen.Gibt es eine Möglichkeit, ein neuronales Encog-Netzwerk zu trainieren, ohne alle gespeicherten Trainingseinheiten zu laden?

Ich habe mit dem alten Rahmen zu einigen Problemen aufgrund Encog zu wechseln habe ich beschlossen, wurde mit, und auch, weil Encog scheint viel reicher und zusätzliche Funktionen bietet.

Mein Problem ist, dass Encog Lasten auf einmal Trainingsdaten, in ein 2D-Array, und das ist nichts für mich, da ich eine sehr große Datenmenge haben. Ich habe um diese versucht zu arbeiten, und überprüft auch andere Fragen (wie this one konnte aber nicht eine gute Antwort finden).

Ich habe versucht, mit SQLNeuralDataSet und anderen Implementierungen zu arbeiten, die Streaming-Betrieb unterstützen, aber sie alle scheinen schließlich die Daten in den Speicher zu laden (mit MemoryDataLoader) und das löst mein Problem nicht.

Gibt es eine Art, wie ich mein Netzwerk ein Element laden zu einer Zeit (und Zug)? Oder ist diese Option in Encog nicht verfügbar?

Dank

EDIT

landete ich den Quellcode kopieren und nach meinen Bedürfnissen modifizieren. Im Grunde ist es kommt alles auf Process(IMLDataPair pair)GradientWorker in die, entsprechend der Dokumentation:

Prozess ein Trainingsset element.

Antwort

1

Betrachtet man die source code für die Datenquellen für Encog, gibt es eine Reihe von Optionen. Schauen Sie sich Buffer/BufferedMLDataSet.cs, zum Beispiel:

/// This class is not memory based, so very long files can be used, without 
/// running out of memory. This dataset uses a Encog binary training file as a 
/// buffer. 
+0

Ich habe versucht 'BufferedMLDataSet.cs' aber es hat nicht wirklich mein Problem zu lösen. Grundsätzlich hatte ich eine Schleife durch meine Datensatz eine CSV-Datei mit den Ein- und Ausgängen bauen, wandeln dann die CSV-Datei (die als groß) Binär mit 'EncogUtility.ConvertCSV2Binary' dann geladen in eine trainingSet wie folgt aus:' var trainingSet = new BufferedMLDataSet (binaryFile) 'und übergeben Sie den trainingsSet an das BackPropagation-Objekt. Es wäre viel besser, wenn ich das Training einzeln laden könnte. – kristoffz

Verwandte Themen