5
model.fit(X_train, y_train, batch_size = batch_size, 
    nb_epoch = 4, validation_data = (X_test, y_test), 
    show_accuracy = True)  
score = model.evaluate(X_test, y_test, 
    batch_size = batch_size, show_accuracy = True, verbose=0) 

donne une sortie scalaire et par conséquent le code suivant ne fonctionne pas.Comment obtenir le score et la précision après la formation

print("Test score", score[0]) 
print("Test accuracy:", score[1]) 

La sortie que je reçois est: train sur 20000 échantillons, valider sur 5000 échantillons

Epoch 1/4 

20000/20000 [==============================] - 352s - loss: 0.4515 - val_loss: 0.4232 

Epoch 2/4 

20000/20000 [==============================] - 381s - loss: 0.2592 - val_loss: 0.3723 

Epoch 3/4 

20000/20000 [==============================] - 374s - loss: 0.1513 - val_loss: 0.4329 

Epoch 4/4 

20000/20000 [==============================] - 380s - loss: 0.0838 - val_loss: 0.5044 

Keras version 1.0

Comment puis-je obtenir la précision aussi bien? S'il vous plaît aider

+0

Qu'entendez-vous par score au test? Est-ce une perte de test? –

+0

Pourriez-vous imprimer history.history.keys()? –

+0

Les clés sont loss et val_loss. –

Répondre

4

Si vous utilisez le modèle Sequential vous pouvez essayer (CODE À JOUR):

nb_epochs = 4 
history = model.fit(X_train, y_train, batch_size = batch_size, 
nb_epoch = nb_epochs, validation_data = (X_test, y_test), 
show_accuracy = True) 

print("Test score", history.history["val_loss"][nb_epochs - 1]) 
print("Test acc", history.history["val_acc"][nb_epochs - 1]) 
+0

Merci Marcin mais mon modèle ne génère aucun champ val_acc comme on le voit à la sortie de model.fit. Je suppose que le paramètre show_accuracy = True ne fonctionne pas dans mon cas. –

+0

Pourriez-vous imprimer le type de champs de votre dictionnaire d'historique (par exemple en l'imprimant)? Utilisez-vous le modèle Sequential? Quelle version de Keras avez-vous? –

+0

J'utilise le modèle Sequential –

3

Merci Marcin et vous avez raison.

Le code doit être comme ça

model.compile(loss='binary_crossentropy', 
      optimizer = 'adam', 
      metrics=["accuracy"]) 

show_accuracy ne sert à rien dans model.fit et doit être retiré de là.