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.
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.
Une fois l'application enregistrée, nous souhaitons publier sur Slack en externe cette fois, alors activez les Webhooks entrants.
Après cela, si vous suivez les instructions à l'écran, la clé API sera émise.
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.
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.)
Recommended Posts