CNTK - Monitoraggio del modello

In questo capitolo capiremo come monitorare un modello in CNTK.

introduzione

Nelle sezioni precedenti, abbiamo eseguito alcune convalide sui nostri modelli NN. Ma è necessario e possibile monitorare il nostro modello anche durante l'allenamento?

Sì, già abbiamo usato ProgressWriterclass per monitorare il nostro modello e ci sono molti altri modi per farlo. Prima di approfondire i metodi, diamo prima un'occhiata a come funziona il monitoraggio in CNTK e come possiamo usarlo per rilevare i problemi nel nostro modello NN.

Richiamate in CNTK

In realtà, durante l'addestramento e la convalida, CNTK ci consente di specificare i callback in diversi punti dell'API. Innanzitutto, diamo un'occhiata più da vicino a quando CNTK richiama i callback.

Quando CNTK richiama i callback?

CNTK richiamerà i callback nei momenti del set di addestramento e test quando -

  • Un minibatch è completato.

  • Durante l'addestramento viene completata una scansione completa del set di dati.

  • Viene completato un minibatch di test.

  • Durante il test viene completata una scansione completa del set di dati.

Specifica dei callback

Mentre lavoriamo con CNTK, possiamo specificare callback in diversi punti dell'API. Ad esempio -

Quando chiamare il treno su una funzione di perdita?

Qui, quando chiamiamo training su una funzione di perdita, possiamo specificare un insieme di callback tramite l'argomento callbacks come segue:

training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)

Quando si lavora con sorgenti minibatch o si usa un loop minibatch manuale -

In questo caso, possiamo specificare i callback a scopo di monitoraggio durante la creazione del file Trainer come segue -

from cntk.logging import ProgressPrinter
callbacks = [
   ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])

Vari strumenti di monitoraggio

Cerchiamo di studiare diversi strumenti di monitoraggio.

ProgressPrinter

Durante la lettura di questo tutorial, troverai ProgressPrintercome lo strumento di monitoraggio più utilizzato. Alcune delle caratteristiche diProgressPrinter strumento di monitoraggio sono -

ProgressPrinterclass implementa la registrazione di base basata su console per monitorare il nostro modello. Può accedere al disco che vogliamo.

Particolarmente utile quando si lavora in uno scenario di formazione distribuito.

È anche molto utile mentre si lavora in uno scenario in cui non possiamo accedere alla console per vedere l'output del nostro programma Python.

Con l'aiuto del codice seguente, possiamo creare un'istanza di ProgressPrinter-

ProgressPrinter(0, log_to_file=’test.txt’)

Otterremo l'output qualcosa che abbiamo visto nelle sezioni precedenti -

Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]

TensorBoard

Uno degli svantaggi dell'utilizzo di ProgressPrinter è che non possiamo ottenere una buona visione di come la perdita e il progresso della metrica nel tempo siano difficili. TensorBoardProgressWriter è un'ottima alternativa alla classe ProgressPrinter in CNTK.

Prima di usarlo, dobbiamo prima installarlo con l'aiuto del seguente comando:

pip install tensorboard

Ora, per poter utilizzare TensorBoard, dobbiamo configurare TensorBoardProgressWriter nel nostro codice di formazione come segue -

import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)

È buona norma richiamare il metodo close TensorBoardProgressWriter esempio dopo aver fatto con la formazione di NNmodello.

Possiamo visualizzare il file TensorBoard registrazione dei dati con l'aiuto del seguente comando:

Tensorboard –logdir logs