[PYTHON] Informer Slack de la manière dont Keras apprend

image.png

Récemment, je forme souvent des modèles avec Keras, une bibliothèque d'apprentissage profond de Python. L'apprentissage en profondeur prend généralement beaucoup de temps pour entraîner le modèle, et je ne me connecte pas toujours au serveur GPU (ou au serveur puissant similaire) pour vérifier la console, donc j'apprécierais que vous puissiez rapporter la progression à chaque fois. est.

Ainsi, à partir de la fonction de rappel de Keras, appuyez sur WebAPI de Slack pour essayer de notifier par chat.

Obtention d'une clé Slack WebAPI

Tout d'abord, obtenez la clé API requise. La tâche d'obtenir une clé API pour Slack se limite à un résumé car il y a beaucoup de matériel disponible et la documentation officielle est gentille.

Depuis Slack Official, appuyez sur le bouton "Démarrer la construction" en haut de l'écran. Ensuite, le nom de l'application qui utilise la clé API (appropriée et OK, par exemple, "notifier") et la fenêtre contextuelle qui enregistre l'équipe qui souhaite utiliser la clé API s'afficheront. Saisissez-le comme il convient. image.png

Une fois l'application enregistrée, nous souhaitons publier sur Slack en externe cette fois, alors activez les Webhooks entrants. 貼り付けた画像_2017_04_26_14_49.png

Après cela, si vous suivez les instructions à l'écran, la clé API sera émise. 貼り付けた画像_2017_04_26_14_51.png

Lorsque la clé API est émise, l'exemple de code s'affiche, il est donc conseillé de le copier et de le coller pour vérifier l'opération une fois. 貼り付けた画像_2017_04_26_14_53.png

Paramètres de rappel Keras

Keras fournit une classe appelée LambdaCallback qui facilite la génération de rappels personnalisés, vous pouvez donc simplement l'utiliser:

import os

from keras.callbacks import LambdaCallback

hostname = os.uname()[1]

callbacks = []

slack_command = 'curl -X POST -H \'Content-type: application/json\' --data \'{{"text":"Here is {}.\nepoch:{:03d}, loss:{:.7f}, val_loss:{:.7f}"}}\' https://hooks.slack.com/services/<your_key_here>'
slack_callback = LambdaCallback(
    on_epoch_end=lambda epoch, logs: os.system(slack_command.format(hostname, epoch, logs['loss'], logs['val_loss'])))
callbacks.append(slack_callback)

#Tout ce que vous avez à faire est de passer Callback lors de l'appel de la méthode d'apprentissage du modèle de Keras comme d'habitude.
history = model.fit_generator(train_generator, samples_per_epoch, nb_epoch, callbacks=callbacks,
                    validation_data=val_generator, nb_val_samples=nb_val_samples)

Remplacez «<your_key_here>» par votre clé API. De plus, loss et val_loss existent sans rien faire, mais si vous voulez d'autres métriques, vous pouvez les passer à l'argument metrics de la méthodemodel.compile ()et les nommer` LambdaCallback. «Vous pouvez également vous y référer. Pour l'enregistrement des métriques personnalisées, reportez-vous à Page correspondante du document officiel de Keras.

Comme vous pouvez le voir dans le code ci-dessus, LambdaCallback a des hooks tels que ʻon_epoch_begin et ʻon_batch_end en plus de ʻon_epoch_end`. Cependant, il serait ennuyeux que Slack ignore les notifications lot par lot, donc je ne l'utiliserai peut-être pas à cette fin. (Cela peut être pratique pour se connecter au CSV, etc.)

Lien de référence

Recommended Posts

Informer Slack de la manière dont Keras apprend
Informer régulièrement Slack des problèmes de backlog manqués
Notifier Slack lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé
J'ai essayé d'informer Slack de la mise à jour de Redmine
Apprentissage parallèle du deep learning par Keras et Kubernetes
Notifier Slack des changements d'état de processus à l'aide d'EventListener de Supervisor
Bilan du premier défi du machine learning avec Keras
Résumé de Tensorflow / Keras
Deep learning 1 Pratique du deep learning
Qu'est-ce que l'apprentissage d'ensemble?
Qu'est-ce que l'apprentissage automatique?
[TensorFlow 2 / Keras] Comment exécuter l'apprentissage avec CTC Loss dans Keras
Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
Un résumé de l'apprentissage automatique Python pour débutant est très concis.