Was ist die Verwendung von verbose in Keras bei der Validierung des Modells?


89

Ich verwende das LSTM-Modell zum ersten Mal. Hier ist mein Modell:

opt = Adam(0.002)
inp = Input(...)
print(inp)
x = Embedding(....)(inp)
x = LSTM(...)(x)
x = BatchNormalization()(x)
pred = Dense(5,activation='softmax')(x)

model = Model(inp,pred)
model.compile(....)

idx = np.random.permutation(X_train.shape[0])
model.fit(X_train[idx], y_train[idx], nb_epoch=1, batch_size=128, verbose=1)

Was nützt es wortreich beim Trainieren des Modells?

Antworten:


210

Überprüfen Sie die Dokumentation für model.fit hier .

Indem Sie ausführlich 0, 1 oder 2 einstellen, sagen Sie einfach, wie Sie den Trainingsfortschritt für jede Epoche "sehen" möchten.

verbose=0 wird dir nichts zeigen (still)

verbose=1 zeigt Ihnen einen animierten Fortschrittsbalken wie folgt:

Progres_bar

verbose=2 Ich werde nur die Anzahl der Epochen wie folgt erwähnen:

Geben Sie hier die Bildbeschreibung ein


20
ausführlich: Ganzzahl. 0, 1 oder 2. Ausführlichkeitsmodus. 0 = lautlos, 1 = Fortschrittsbalken, 2 = eine Zeile pro Epoche. Danke @ank du rockst ..
Rakesh

2
Dieser Kommentar ist die beste Antwort auf die Frage, sogar besser als die kommentierte Antwort. Beachten Sie dies und versuchen Sie, Wörter zu vermeiden, um die Antwort zu verlängern. @rakesh, du rockst.
Konstantin Sekeresh

19

verbose: Integer. 0, 1 oder 2. Ausführlichkeitsmodus.

Verbose = 0 (still)

Ausführlich = 1 (Fortschrittsbalken)

Train on 186219 samples, validate on 20691 samples
Epoch 1/2
186219/186219 [==============================] - 85s 455us/step - loss: 0.5815 - acc: 
0.7728 - val_loss: 0.4917 - val_acc: 0.8029
Train on 186219 samples, validate on 20691 samples
Epoch 2/2
186219/186219 [==============================] - 84s 451us/step - loss: 0.4921 - acc: 
0.8071 - val_loss: 0.4617 - val_acc: 0.8168

Verbose = 2 (eine Zeile pro Epoche)

Train on 186219 samples, validate on 20691 samples
Epoch 1/1
 - 88s - loss: 0.5746 - acc: 0.7753 - val_loss: 0.4816 - val_acc: 0.8075
Train on 186219 samples, validate on 20691 samples
Epoch 1/1
 - 88s - loss: 0.4880 - acc: 0.8076 - val_loss: 0.5199 - val_acc: 0.8046

Können Sie erklären, warum ich nicht die erwartete Ausgabe für verschiedene verbose vakues bekomme? Ich erhalte die gleiche [stille] Ausgabe für verbose = 0 und 2 für meine Datei? Und für verbose = 1 erhalte ich den Fortschrittsbalken nur am Ende von Epochen wie Epoche 10/10 - 21s - Verlust: 0,2354 - acc: 0,9286 - val_loss: 0,2206 - val_acc: 0,9344 [======== =====================] Genauigkeit: 0.9344 Fehler: 6.560000000000002
Dr. Nisha Arora

tolle Antwort, hat mir geholfen. Gültig für Tensorflow 2.2
Bobs Burgers

9

Für verbose> 0 fitMethodenprotokolle:

  • Verlust : Wert der Verlustfunktion für Ihre Trainingsdaten
  • acc : Genauigkeitswert für Ihre Trainingsdaten.

Hinweis: Wenn Regularisierungsmechanismen verwendet werden, werden diese aktiviert, um eine Überanpassung zu vermeiden.

Wenn validation_dataoder validation_splitArgumente nicht leer sind, fitprotokolliert die Methode:

  • val_loss : Wert der Verlustfunktion für Ihre Validierungsdaten
  • val_acc : Genauigkeitswert für Ihre Validierungsdaten

Hinweis: Die Regularisierungsmechanismen sind zum Testzeitpunkt deaktiviert, da wir alle Funktionen des Netzwerks nutzen.

Wenn Sie verbosedas Modell beispielsweise während des Trainings verwenden, können Sie eine Überanpassung erkennen, die auftritt, wenn Sie accsich weiter verbessern, während sich Ihre val_accSituation verschlechtert.


Welche Relevanz hat die Regularisierung für den Ausführlichkeitsparameter?!
Chrisji

Der ausführliche Parameter hat keinen Einfluss auf die Regularisierungsmechanismen. Ich füge nur Informationen darüber hinzu, was angezeigt wird, wenn verbose aktiviert ist (um auf die ursprüngliche Frage "Was nützt verbose beim Trainieren des Modells?" => Beispiel: Vermeidung von Überanpassung durch Vergleich von acc und val_acc).
Hugo Bevilacqua

1

Standardmäßig ausführlich = 1,

verbose = 1, die sowohl den Fortschrittsbalken als auch eine Zeile pro Epoche enthält

verbose = 0 bedeutet still

wortreich = 2, eine Zeile pro Epoche, dh Epochen-Nr. von Epochen


0

Die Reihenfolge der mit dem ausführlichen Flag versehenen Details ist wie folgt

Weniger Details .... Weitere Details

0 <2 <1

Standard ist 1

Für die Produktionsumgebung wird 2 empfohlen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.