Valutazione delle prestazioni del modello
Per valutare le prestazioni del modello, chiamiamo evaluate metodo come segue -
loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)
Per valutare le prestazioni del modello, chiamiamo evaluate metodo come segue -
loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)
Stamperemo la perdita e l'accuratezza utilizzando le seguenti due dichiarazioni:
print("Test Loss", loss_and_metrics[0])
print("Test Accuracy", loss_and_metrics[1])
Quando esegui le istruzioni precedenti, vedrai il seguente output:
Test Loss 0.08041584826191042
Test Accuracy 0.9837
Questo mostra una precisione del test del 98%, che dovrebbe essere accettabile per noi. Cosa significa per noi che nel 2% dei casi le cifre scritte a mano non sarebbero classificate correttamente. Tracciamo anche metriche di accuratezza e perdita per vedere come si comporta il modello sui dati di test.
Metriche di accuratezza della stampa
Usiamo il registrato historydurante la nostra formazione per ottenere un grafico delle metriche di precisione. Il codice seguente traccerà la precisione in ogni epoca. Raccogliamo l'accuratezza dei dati di addestramento ("acc") e l'accuratezza dei dati di convalida ("val_acc") per la stampa.
plot.subplot(2,1,1)
plot.plot(history.history['acc'])
plot.plot(history.history['val_acc'])
plot.title('model accuracy')
plot.ylabel('accuracy')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='lower right')
Il grafico dell'output è mostrato di seguito:
Come puoi vedere nel diagramma, la precisione aumenta rapidamente nelle prime due epoche, indicando che la rete sta imparando velocemente. Successivamente, la curva si appiattisce indicando che non sono necessarie troppe epoche per addestrare ulteriormente il modello. In genere, se la precisione dei dati di addestramento ("acc") continua a migliorare mentre la precisione dei dati di convalida ("val_acc") peggiora, si verifica un overfitting. Indica che il modello sta iniziando a memorizzare i dati.
Tracciamo anche le metriche delle perdite per verificare le prestazioni del nostro modello.
Tracciamento delle metriche di perdita
Ancora una volta, tracciamo il grafico della perdita sia sui dati di addestramento ("perdita") e di prova ("val_loss"). Questo viene fatto utilizzando il codice seguente:
plot.subplot(2,1,2)
plot.plot(history.history['loss'])
plot.plot(history.history['val_loss'])
plot.title('model loss')
plot.ylabel('loss')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='upper right')
L'output di questo codice è mostrato di seguito:
Come puoi vedere nel diagramma, la perdita sul set di allenamento diminuisce rapidamente per le prime due epoche. Per il set di test, la perdita non diminuisce alla stessa velocità del set di allenamento, ma rimane pressoché invariata per più epoche. Ciò significa che il nostro modello sta generalizzando bene ai dati invisibili.
Ora useremo il nostro modello addestrato per prevedere le cifre nei nostri dati di test.