Ich versuche, ein binäres Klassifizierungsproblem mit Keras zu machen, mit der ImageDataGenerator.flow_from_directory
Methode, um Stapel zu generieren. Meine Klassen sind jedoch sehr unausgeglichen, etwa 8x oder 9x mehr in einer Klasse als die andere, was dazu führt, dass das Modell hängenbleibt und die gleiche Ausgabeklasse für jedes Beispiel vorhersagt. Gibt es eine Möglichkeit, flow_from_directory
zu setzen, um entweder aus meiner kleinen Klasse oder Unterabtastung von meiner großen Klasse während jeder Epoche zu überlagern? Für den Moment habe ich gerade mehrere Kopien von jedem Bild in meiner kleineren Klasse erstellt, aber ich hätte gerne etwas mehr Flexibilität.keras flow_from_directory über oder Unterabtastung einer Klasse
Antwort
Mit der aktuellen Keras-Version ist es nicht möglich, den Dataset mithilfe von Keras integrierten Methoden zu balancieren. Die flow_from_directory
erstellt einfach eine Liste aller Dateien und ihrer Klassen, mischt sie (wenn es nötig ist) und dann iteriert sie darüber.
Aber Sie könnten einen anderen Trick - mit dem eigenen Generator writting, die den Ausgleich im Inneren des python
machen würde:
def balanced_flow_from_directory(flow_from_directory, options):
for x, y in flow_from_directory:
yield custom_balance(x, y, options)
Hier custom_balance
sollte eine Funktion, die eine Charge gegeben (x, y)
ist es Ausgleich und eine Rückkehr ausgewogene Charge (x', y')
. Für die meisten Anwendungen muss die Größe des Stapels nicht die gleiche sein - aber es gibt einige seltsame Anwendungsfälle (wie z. B. stateful RNNs), wo Stapelgrößen eine feste Größe haben sollten.
Sie können auch die Anzahl der Dateien in jeder Klasse berechnen und den class_weights
files_per_class = []
for folder in os.listdir(input_foldr):
if not os.path.isfile(folder):
files_per_class.append(len(os.listdir(input_foldr + '/' + folder)))
total_files = sum(files_per_class)
class_weights = {}
for i in xrange(len(files_per_class)):
class_weights[i] = 1 - (float(files_per_class[i])/total_files)
print (class_weights)
...
...
...
model.fit_generator(... ,class_weight=class_weights)
Bitte fügen Sie Beispielcode und mehr Erklärung hinzu –
Bitte bearbeiten Sie Ihre Antwort und fügen Sie diesen Code hinzu –
- 1. Keras ImageDataGenerator Methode flow_from_directory
- 2. In welcher Reihenfolge übernimmt 'flow_from_directory' in Keras die Proben?
- 3. Ist es möglich, automatisch die Klasse_weight von flow_from_directory in Keras abzuleiten?
- 4. scikit-learn Unterabtastung von unsymmetrischen Daten für die Kreuzvalidierung
- 5. Keras Aufmerksamkeit Schicht über LSTM
- 6. Keras Verwirrung über die Anzahl der Schichten
- 7. Klassenbezeichnungen erhalten von Keras Funktionsmodell
- 8. Hinzufügen einer Klasse über jQuery
- 9. Faltung über zwei Bilder mit Keras
- 10. Extjs: Klasse über Konstruktor oder initComponent erweitern?
- 11. Multi-Output Multi-Klasse Keras Modell
- 12. Keras Zug Teilmodell Problem (über GAN-Modell)
- 13. Keras RNN Verlust nicht über die Zeit
- 14. Rspec/Capybara - Test Vorhandensein einer Klasse oder einer anderen Klasse
- 15. Verhalten einer Leaflet-Klasse über include() ändern
- 16. Wie verwende ich eine abstrakte Klasse in einer anderen Klasse (oder einer Klasse)?
- 17. Java definiert oder initialisiert Attribute einer Klasse
- 18. Debug Keras Zwischenschicht oder Zielvariablen mit Tensorflow
- 19. Über sizeof einer Klasse Mitglied Funktionszeiger
- 20. Einstellungen direkt oder über eine Wrapper-Klasse verwenden?
- 21. Protokollierung in einer Klasse oder Entität
- 22. Keras Binary Classifier Model.Predict() Klassenassoziation?
- 23. Keras - class_weight Fehler
- 24. Wie kann ich Faltung über die undefinierte Form in Keras oder Tensorflow anwenden?
- 25. Über Java ByteArrayOutputStream Klasse
- 26. Wie bekomme ich Etiketten-IDs in Keras, wenn ich an mehreren Kursen trainiere?
- 27. Klasse in CSS oder Hover über 2 überlappende divs setzen
- 28. Wann Singleton-Klasse über statische Klasse
- 29. So verwendet keras ImageDataGenerator mit einem siamesischen oder Tripple-Netzwerken
- 30. Split-Ausgabe einer Schicht in Keras
Dank dieser etwa zu sein scheint normalisieren, was ich brauchte – George
jemand ein voll funktionsfähiges Skript auf dieser Basis erstellen, zu erarbeiten? Ich brauche ein konkreteres Beispiel für custom_balance usw. – mikal94305