157 votes

Quelle est l'utilité de verbose dans Keras lors de la validation du modèle ?

Je lance le modèle LSTM pour la première fois. Voici mon modèle :

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)

Quelle est l'utilité de verbose pendant l'entraînement du modèle ?

331voto

Ankit Points 1170

Vérifier la documentation pour model.fit ici .

En définissant verbose 0, 1 ou 2, vous indiquez simplement comment vous voulez "voir" la progression de l'entraînement pour chaque époque.

verbose=0 ne vous montrera rien (silencieux)

verbose=1 vous montrera une barre de progression animée comme celle-ci :

progres_bar

verbose=2 va juste mentionner le nombre d'époques comme ceci :

enter image description here

42 votes

verbeux : Nombre entier. 0, 1 ou 2. Mode de verbosité. 0 = silencieux, 1 = barre de progression, 2 = une ligne par époque. Merci @ank you rock..

2 votes

Ce commentaire est la meilleure réponse à la question, même meilleure que la réponse commentée. Notez-le et essayez d'éviter les mots destinés à allonger la réponse. @rakesh, tu es génial.

39voto

verbose: Integer . 0, 1, ou 2. Mode de verbosité.

Verbose=0 (silencieux)

Verbose=1 (barre de progression)

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 (une ligne par époque)

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

0 votes

Pouvez-vous m'expliquer pourquoi je n'obtiens pas les résultats attendus pour les différentes versions de verbose. J'obtiens la même sortie [silencieuse] pour verbose = 0 et 2 pour mon fichier ? Et pour verbose = 1, j'obtiens une barre de progression seulement à la fin des époques comme Epoch 10/10 - 21s - loss : 0.2354 - acc : 0.9286 - val_loss : 0.2206 - val_acc : 0.9344 [==============================] Précision : 0.9344 Erreur : 6.560000000000002

0 votes

Excellente réponse, qui m'a aidé. Valable pour tensorflow 2.2

11voto

Hugo Bevilacqua Points 151

Pour verbose > 0, fit les journaux des méthodes :

  • perte Valeur de la fonction de perte pour vos données d'apprentissage
  • acc : valeur de précision pour vos données de formation.

Remarque : Si des mécanismes de régularisation sont utilisés, ils sont activés pour éviter un ajustement excessif.

si validation_data o validation_split ne sont pas vides, fit les journaux des méthodes :

  • perte de valeur Valeur de la fonction de perte pour vos données de validation
  • val_acc Valeur de précision pour vos données de validation

Note : Les mécanismes de régularisation sont désactivés au moment du test car nous utilisons toutes les capacités du réseau.

Par exemple, en utilisant verbose pendant la formation du modèle permet de détecter l'overfitting qui se produit si votre acc ne cesse de s'améliorer tandis que votre val_acc s'aggrave.

0 votes

Quelle est la pertinence de la régularisation par rapport au paramètre de verbosité !

1 votes

Le paramètre Verbose n'a aucun impact sur les mécanismes de régularisation. J'ajoute simplement des informations sur ce qui est affiché si verbose est activé (pour répondre à la question initiale "Quelle est l'utilité de verbose lors de l'entraînement du modèle ?" => ex : éviter l'overfitting en comparant acc et val_acc).

8voto

Md. Imrul Kayes Points 21

Verbose est le choix de la façon dont vous voulez voir la sortie de votre réseau neuronal pendant sa formation. Si vous définissez verbose = 0, il ne montrera rien.

Si vous définissez verbose = 1, il montrera la sortie comme ceci Epoque 1/200 55/55 [==============================] - 10s 307ms/pas - perte : 0.56 - précision : 0.4949

Si vous définissez verbose = 2, la sortie sera comme suit Époque 1/200 Epoch 2/200 Epoch 3/200

4voto

Ashiq Imran Points 124

Par défaut, verbose = 1,

verbose = 1, qui inclut à la fois la barre de progression et une ligne par époch.

verbose = 0, signifie silencieux

verbose = 2, une ligne par époch, c'est-à-dire n° d'époch / n° total d'époch.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X