Keras Unterschied zwischen val_loss und loss während des Trainings

17

Was ist der Unterschied zwischen val_lossund losswährend des Trainings in Keras?

Z.B

Epoch 1/20
1000/1000 [==============================] - 1s - loss: 0.1760, val_loss: 0.2032  

Auf einigen Websites habe ich gelesen, dass Dropout bei der Validierung nicht funktioniert hat.

Vladimircape
quelle
Was Sie über Dropout lesen, ist wahrscheinlich, dass Dropout nur während des Trainings angewendet wird (dh während der Validierung wird kein Dropout angewendet) , wenn Dropout verwendet wird (dh dropoutnicht None). Daher besteht einer der Unterschiede zwischen Validierungsverlust ( val_loss) und Trainingsverlust ( loss) darin, dass der Validierungsverlust bei Verwendung von Dropout geringer sein kann als der Trainingsverlust (normalerweise nicht zu erwarten, wenn kein Dropout verwendet wird).
Psi

Antworten:

15

val_lossist der Wert der Kostenfunktion für Ihre Kreuzvalidierungsdaten und der Verlust ist der Wert der Kostenfunktion für Ihre Trainingsdaten. Bei Validierungsdaten lassen Neuronen, die Dropout verwenden, keine zufälligen Neuronen fallen. Der Grund dafür ist, dass wir während des Trainings Drop-Outs verwenden, um ein gewisses Maß an Lärm zu erzeugen und eine Überanpassung zu vermeiden. Bei der Berechnung der Kreuzvalidierung befinden wir uns in der Rückrufphase und nicht in der Schulungsphase. Wir nutzen alle Funktionen des Netzwerks.

Dank eines unserer lieben Freunde zitiere und erkläre ich den Inhalt von hier, der nützlich ist.

validation_split: Float zwischen 0 und 1. Der Bruchteil der Trainingsdaten, die als Validierungsdaten verwendet werden sollen. Das Modell unterscheidet diesen Teil der Trainingsdaten, trainiert ihn nicht und bewertet den Verlust und alle Modellmetriken für diese Daten am Ende jeder Epoche. Die Validierungsdaten werden aus den letzten Abtastwerten in den bereitgestellten x- und y- Daten vor dem Mischen ausgewählt.

validation_data: Tupel (x_val, y_val) oder Tupel (x_val, y_val, val_sample_weights), anhand dessen der Verlust und alle Modellmetriken am Ende jeder Epoche bewertet werden. Das Modell wird nicht auf diese Daten trainiert. Dadurch wird validation_split überschrieben.

Wie du sehen kannst

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

fitDie in verwendete Methode Kerasverfügt über einen Parameter namens validation_split, der den Prozentsatz der Daten angibt, die für die Bewertung des Modells verwendet werden, das nach jeder Epoche erstellt wird. Nachdem Sie das Modell anhand dieser Datenmenge ausgewertet haben, wird dies gemeldet, val_losswenn Sie "Ausführlich" eingestellt haben 1. Darüber hinaus können Sie, wie in der Dokumentation eindeutig angegeben, entweder validation_dataoder verwenden validation_split. Kreuzvalidierungsdaten werden verwendet, um zu untersuchen, ob Ihr Modell über die Daten passt oder nicht. Dies ist es, was wir verstehen können, ob unser Modell generalisierbar ist oder nicht.

Medien
quelle