CNTK - Suivi du modèle

Dans ce chapitre, nous allons comprendre comment surveiller un modèle en CNTK.

introduction

Dans les sections précédentes, nous avons effectué quelques validations sur nos modèles NN. Mais, est-il également nécessaire et possible de suivre notre modèle pendant la formation?

Oui, nous avons déjà utilisé ProgressWriterclasse pour surveiller notre modèle et il existe de nombreuses autres façons de le faire. Avant d'entrer dans les détails, voyons d'abord comment fonctionne la surveillance dans CNTK et comment nous pouvons l'utiliser pour détecter les problèmes dans notre modèle NN.

Rappels dans CNTK

En fait, lors de la formation et de la validation, CNTK nous permet de spécifier des callbacks à plusieurs endroits de l'API. Tout d'abord, examinons de plus près quand CNTK appelle des rappels.

Quand CNTK appelle-t-il des rappels?

CNTK appellera les rappels aux moments de l'entraînement et du test lorsque -

  • Un mini-match est terminé.

  • Un balayage complet de l'ensemble de données est effectué pendant la formation.

  • Un mini-lot de tests est terminé.

  • Un balayage complet de l'ensemble de données est effectué pendant les tests.

Spécification des rappels

Tout en travaillant avec CNTK, nous pouvons spécifier des rappels à plusieurs endroits dans l'API. Par exemple -

Quand appeler le train sur une fonction de perte?

Ici, lorsque nous appelons train sur une fonction de perte, nous pouvons spécifier un ensemble de callbacks via l'argument callbacks comme suit -

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

Lorsque vous travaillez avec des sources minibatch ou utilisez une boucle minibatch manuelle -

Dans ce cas, nous pouvons spécifier des rappels à des fins de surveillance lors de la création du Trainer comme suit -

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

Divers outils de surveillance

Étudions les différents outils de surveillance.

ProgressPrinter

En lisant ce tutoriel, vous trouverez ProgressPrintercomme outil de surveillance le plus utilisé. Certaines des caractéristiques deProgressPrinter les outils de surveillance sont -

ProgressPrinterclass implémente la journalisation de base basée sur la console pour surveiller notre modèle. Il peut se connecter sur le disque que nous voulons.

Particulièrement utile lorsque vous travaillez dans un scénario de formation distribuée.

C'est également très utile lorsque vous travaillez dans un scénario où nous ne pouvons pas nous connecter à la console pour voir la sortie de notre programme Python.

À l'aide du code suivant, nous pouvons créer une instance de ProgressPrinter-

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

Nous obtiendrons la sortie quelque chose que nous avons vu dans les sections précédentes -

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

L'un des inconvénients de l'utilisation de ProgressPrinter est que nous ne pouvons pas avoir une bonne idée de la difficulté de la perte et de la progression de la mesure dans le temps. TensorBoardProgressWriter est une excellente alternative à la classe ProgressPrinter dans CNTK.

Avant de l'utiliser, nous devons d'abord l'installer à l'aide de la commande suivante -

pip install tensorboard

Maintenant, pour utiliser TensorBoard, nous devons configurer TensorBoardProgressWriter dans notre code de formation comme suit -

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

Il est recommandé d'appeler la méthode close sur TensorBoardProgressWriter instance après avoir terminé avec la formation de NNmodèle.

Nous pouvons visualiser le TensorBoard enregistrement des données à l'aide de la commande suivante -

Tensorboard –logdir logs