Trainieren Sie den Klassifikator für mehrere Klassen in Keras

8

Ich habe ein Tutorial verfolgt, um einen Klassifikator mit Keras zu trainieren.

Ссылка

Aus dem zweiten Skript des Autors wollte ich das Skript in ein Skript umwandeln, das trainiert werden kann Mehrklassen-Klassifikator (war eine Binärdatei für Katze und Hund). Ich habe 5 Klassen in meinem Zugordner, also habe ich folgende Änderung vorgenommen:

In der Funktion von train_top_model ():

Ich habe mich geändert

%Vor%

in

%Vor%

Nach dem Training erreichte das Modell eine Trainingsgenauigkeit von fast 99%, aber nur für eine Genauigkeit von 70% der Validierungsgenauigkeit. So fing ich an zu denken, dass es vielleicht nicht so einfach ist, 2 Klassen Training in 5 Klassen zu verwandeln. Vielleicht muss ich bei der Beschriftung der Klassen die One-Hot-Codierung verwenden (aber ich weiß nicht wie)

BEARBEITEN:

Ich habe auch mein Feintrieb-Skript beigefügt. Ein weiteres Problem: Die Genauigkeit wurde nicht effektiv erhöht, wenn der Feintrieb startet.

%Vor%     
Austin Chen 24.01.2017, 08:12
quelle

1 Antwort

10
  1. Verwenden Sie softmax als Aktivierungsfunktion der Ausgabeschicht, dies ist eine Verallgemeinerung der logistischen Funktion für einen Fall mit mehreren Klassen. Lesen Sie mehr darüber hier .

  2. Wenn der Validierungsfehler viel größer als der Trainingsfehler ist, wie in Ihrem Fall, ist dies ein Anzeichen für Überanpassung. Sie sollten eine Regularisierung durchführen, die definiert ist als jede Änderung des Lernalgorithmus, die den Testfehler reduzieren soll, aber nicht den Trainingsfehler. Sie können Dinge wie Datenerhöhung, frühes Anhalten, Rauschinjektion, aggressiveres Aussetzer usw. ausprobieren.

  3. Wenn Sie die gleichen Einstellungen wie im verknüpften Lernprogramm haben, ändern Sie class_mode von train_generator und validation_generator in categorical und es wird eine einzige Kodierung für Ihre Klassen geben.

Sergii Gryshkevych 24.01.2017, 09:28
quelle