TensorBoard *********** Nous allons tester cet outil permettant de monitorer en live l'évolution d'un apprentissage. Installation ============ Rappel, cet outil s'installe comme un package Python standard. Pour ceux qui ont effectué l'installation sur le bureau, il suffit d'écrire : .. code-block:: python C:\Users\...\Desktop\Pytorch314\python.exe -m pip install tensorboard Prise en main ============= Lancement --------- - Ouvrez une fenêtre de commande (cmd) - Si tensorboard.exe n'est pas dans votre PATH, vous devez déterminer son chemin d'accès. Normalement, il se trouve dans le répertoire *Scripts* de votre installation. - Ajoutez en paramètre le répertoire de script .. tip:: .. code-block:: python C:\Users\Lilian\Desktop\Pytorch314\Scripts\tensorboard.exe --logdir C:\Log\test1 Ainsi, TensorBoard démarre un serveur web local : .. image:: tboard.png Ouvrez votre navigateur préféré et allez à l'adresse : .. tip:: .. code-block:: python localhost:6006 Code test --------- Afin de tester Tensorboard, nous utilisons un entrainement sur MNIST (pour la facilité de calcul) avec un faible learning rate pour avoir une centaine d'epochs à afficher. Vous pouvez télécharger le code test ci-dessous : :download:`code exemple ` Exécutez le programme si vous voulez tester. Logique ------- On crée un objet *logger* pour sauver les informations sur le disque. A chaque fin d'epoch, on enregistre les informations utiles comme les train/val d'accuracy et de loss. A la fin du run, on clôt les fichiers avec un close(). .. code-block:: python from torch.utils.tensorboard import SummaryWriter def train(S): loger = SummaryWriter(S.log_folder) for epoch in range(S.epochs): ... print(...) loger.add_scalars("Loss", {"train": train_GlobLoss, "valid": valid_GlobLoss}, epoch+1) loger.add_scalars("Accuracy", {"train": train_accuracy, "valid": valid_accuracy}, epoch+1) loger.close() Le chemin *Loss\train*, se lit : ajoute un point au tracé nommé *train* dans le graphique nommé *Loss*. Ainsi, ce code construit 2 graphiques : - Un graphiqué nommé Loss : la courbe de Loss du train et la courbe de Loss de la validation - Un graphique nommé Acc : la courbe d'accuracy du train et la courbe d'accuracy de la validation Toutes les informations concernant ces tracés sont stockés dans le répertoire *log_folder*. Configuration ------------- .. |icon| image:: ico.png .. |icon2| image:: ico2.png Dans *Tensorboard*, il y a quelques options à activer pour améliorer l'interface : - Les graphiques construisent pour chaque tracé une deuxième version lissée. Pour alléger les vues, désactivez la version lissée en faisant : rubrique *SCALARS* sur la droite, mettre le *smoothing* à 0. .. image:: smo.png - Pour rafraîchir les graphiques vous pouvez appuyer sur le bouton |icon2|. - Pour activer le raffraîchissement automatique des graphiques, cliquez sur la roue dentée et choisissez *Reload data* : .. image:: reload.png :scale: 60% :align: center - Pour éviter qu'une partie des courbes soit tronquée, **désactivez l'option Ignore outliers** : .. image:: outliers.png :align: center Prise en main ------------- - Sur le bandeau de gauche, vous pouvez activer/désactiver les courbes affichées - Au niveau des graphiques, cliquez sur l'icone |icon| pour l'élargir horizontalement Résultat -------- Si tout est configuré correctement, vous devriez obtenir le tracé dynamique ci-dessous (accéléré ici en x40) .. image:: demo.gif :scale: 80% :align: center En positionnant votre curseur sur un point de la courbe, vous obtenez une lecture précise des valeurs : .. image:: cursor.png :scale: 80% :align: center