Différence de Keras entre val_loss et perte pendant l'entraînement

18

Quelle est la différence entre val_losset losspendant la formation à Keras?

Par exemple

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

Sur certains sites, j'ai lu qu'à la validation, le décrochage ne fonctionnait pas.

Vladimircape
la source
Ce que vous lisez sur l'abandon est probablement que, lorsque l'abandon est utilisé (c'est-à dropout- dire qu'il ne l'est pas None), l'abandon n'est appliqué que pendant la formation (c'est-à-dire qu'aucun abandon n'est appliqué lors de la validation). En tant que tel, l'une des différences entre la perte de validation ( val_loss) et la perte de formation ( loss) est que, lors de l'utilisation du décrochage, la perte de validation peut être inférieure à la perte de formation (généralement non attendue dans les cas où le décrochage n'est pas utilisé).
Psi

Réponses:

15

val_lossest la valeur de la fonction de coût pour vos données de validation croisée et la perte est la valeur de la fonction de coût pour vos données de formation. Sur les données de validation, les neurones utilisant le décrochage ne suppriment pas les neurones aléatoires. La raison en est que pendant l'entraînement, nous utilisons le décrochage afin d'ajouter du bruit pour éviter un sur-ajustement. Lors du calcul de la validation croisée, nous sommes en phase de rappel et non en phase de formation. Nous utilisons toutes les capacités du réseau.

Grâce à l'un de nos chers amis, je cite et explique le contenu d' ici qui est utile.

validation_split: Flotter entre 0 et 1. La fraction des données d'apprentissage à utiliser comme données de validation. Le modèle séparera cette fraction des données d'entraînement, ne s'entraînera pas dessus et évaluera la perte et toutes les métriques du modèle sur ces données à la fin de chaque époque. Les données de validation sont sélectionnées parmi les derniers échantillons dans les données x et y fournies, avant de les mélanger.

validation_data: tuple (x_val, y_val) ou tuple (x_val, y_val, val_sample_weights) sur lequel évaluer la perte et toutes les métriques du modèle à la fin de chaque époque. Le modèle ne sera pas formé sur ces données. Cela remplacera validation_split.

Comme vous pouvez le voir

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)

fitLa méthode utilisée dans Keraspossède un paramètre nommé validation_split, qui spécifie le pourcentage de données utilisées pour évaluer le modèle qui est créé après chaque époque. Après avoir évalué le modèle à l'aide de cette quantité de données, cela sera signalé par val_losssi vous avez défini verbose sur 1; de plus, comme la documentation le précise clairement, vous pouvez utiliser soit validation_dataou validation_split. Les données de validation croisée sont utilisées pour déterminer si votre modèle sur-ajuste les données ou non. C'est ce que nous pouvons comprendre si notre modèle a une capacité de généralisation ou non.

Médias
la source