2017-09-27 1 views
0

J'ai exécuté mon exemple de code en utilisant Keras.Interprétation des métriques de sortie de Keras

model = Sequential([ 
BatchNormalization(axis=1, input_shape=(3,224,224)) 
Flatten(), 
Dense(10, activation='softmax')]) 

model.compile(Adam(lr=1e-4), loss="categorical_crossentropy", metrics=['accuracy']) 
model.fit_generator(batches, batches.nb_sample, nb_epoch=2, 
        validation_data=test_batches, nb_val_samples=test_batches.nb_sample) 

Il a donné cette sortie:

None 
Epoch 1/2 
500/500 [==============================] - 147s - loss: 2.2464 - acc: 0.3520 - val_loss: 6.4765 - val_acc: 0.1100 
Epoch 2/2 
500/500 [==============================] - 140s - loss: 0.8074 - acc: 0.7880 - val_loss: 3.8807 - val_acc: 0.1450 

Je ne suis pas en mesure de trouver le sens de loss, acc, val_loss, val_acc. Toute explication ou lien vers le document sera utile.

This is le plus proche de ce que je cherche. Dans le code ci-dessus, je suis le modèle. Mais c'est aussi donner une précision de validation. À partir de quel ensemble de données cette précision de validation est-elle calculée?

Répondre

2

La perte est la fonction objectif que vous minimisez pour entraîner un réseau de neurones. La valeur loss est la valeur moyenne de la fonction de perte entre lots dans l'ensemble d'apprentissage. Précision (acc) est la précision moyenne entre les lots, également sur l'ensemble d'entraînement. La précision est juste la fraction d'échantillons dans l'ensemble de données que le modèle classifié correctement.

Mais les métriques val sont calculées sur l'ensemble de validation complet, qui est l'ensemble de données que vous avez passé sur le paramètre validation_data. Ceci est fait pour vérifier le surapprentissage pendant l'entraînement.

+0

Merci. CA aide. – Netro

0
  1. En ce qui concerne votre première question: Je recommande respectueusement de vous familiariser avec le basic mechanics of a neural network ou regardez dans l'un des nombreux MOOCs à savoir this excellent one from fast.ai. Ceci est également au-delà de la portée de ce forum car il ne semble pas à propos de la programmation.

  2. Votre précision de validation est calculée à partir des données que vous fournissez en définissant le paramètre validation_data dans votre fonction model.fit_generator(). Dans votre cas, vous l'avez défini sur test_batches, ce qui est très probablement incorrect. Vous devez diviser vos données en trois ensembles: Un pour la formation, un pour la validation (et en voyant la progression de votre formation en ce qui concerne les données invisibles et obtenir des informations utiles pour régler vos hyperparamètres) et un ensemble de données pour tester (pour évaluer le score final de votre modèle).

Encore une chose: nb_val_samples est pas un paramètre de fit_generator plus. Voir documentation here.

+0

Merci, je suis fast.ai :) J'ai pris le code de https://github.com/fastai/courses/blob/master/deeplearning1/nbs/statefarm-sample.ipynb. J'utilise keras 1.2.2. Il a nb_val_samples https://faroit.github.io/keras-docs/1.2.2/models/sequential/#fit_generator – Netro