Während Sie an der Bildklassifizierung arbeiten und auch eine Datenerweiterung implementieren möchten, können Sie die beiden kombinieren UND die Stapel mithilfe der mächtigen 'ImageDataGenerator'-Klasse direkt aus einem Ordner laden.
Schauen Sie sich die ausführliche Dokumentation an!
Ich werde das Beispiel von diesem Link nicht kopieren und einfügen, aber ich kann die Schritte skizzieren, die Sie durchlaufen:
Erstellen Sie die Generatorklasse: data_gen = ImageDataGenerator()
Wenn Sie möchten, dass die Erweiterung im laufenden Betrieb für Sie durchgeführt wird, kann dies beim Erstellen der Klasse angegeben werden: data_gen = ImageDataGenerator(samplewise_center=True, ...)
Wenn Sie Erweiterungsprozesse verwenden, für die einige Statistiken zum Dataset erforderlich sind, z. B. eine merkmalweise Normalisierung (nicht stichprobenweise), müssen Sie den Generator vorbereiten, indem Sie einige Ihrer Daten anzeigen : data_gen.fit(training_data)
. Diese fit
Methode berechnet einfach Dinge wie den Mittelwert und die Standardabweichung vor, die später zur Normalisierung verwendet werden.
Der Generator geht in die fit_generator
Methode des Modells über , und wir nennen die flow_from_directory
Methode des Generators:
model.fit_generator(training_data=data_gen.flow_from_directory('/path/to/folder/'), ...)
Sie können mit ImageDataGenerator auch einen separaten Generator für Ihre Validierungsdaten erstellen, in dem Sie die Erweiterung dann nicht anwenden sollten, damit Validierungstests an realen Daten durchgeführt werden, um ein genaues Bild der Modellleistung zu erhalten.
In jedem Fall laufen diese Generatoren theoretisch für immer und generieren Stapel aus Ihrem Ordner. Daher empfehle ich die Verwendung einer Rückruffunktion von Keras, um zu stoppen, wenn bestimmte Kriterien erfüllt sind. Weitere Informationen finden Sie in der Dokumentation zur EarlyStopping-Klasse . Sie können dies auch manuell tun, aber Keras macht es sehr einfach!
Wenn Sie eine feinkörnige Steuerung wünschen, können Sie alle oben genannten Schritte manuell ausführen, indem Sie genügend Proben von der Festplatte für einen einzelnen Stapel laden, eine Erweiterung durchführen und dann die model.train_on_batch()
Methode ausführen . Wenn Sie sich mit den Details befassen möchten, lernen Sie am besten zuerst die Keras-Methode und fahren dann mit Ihren eigenen detaillierten Modellen fort, die Tensorflow nach Bedarf kämmen. Die beiden können sehr gut zusammen verwendet werden!