LoginSignup
3
4

More than 5 years have passed since last update.

KerasでSlackにエポックごとに学習ログを通知するcallbacks

Last updated at Posted at 2018-11-12

背景

Kerasで1エポックが非常に長い学習を行う時、途中経過が気になって、
毎回確認してしまっていた

そこでエポック終了時にログをSlsackに通知したい

解決方法

kerasにはLambdaCallbackという便利なカスタムコールバックを作成するツールがあった。
Slackのチャンネル名とWebhookURLを取得して以下のように書けば良い

import json
import requests

from keras.callbacks import LambdaCallback


def slack_logging():
    url = YOUR_WEBHOOK_URL

    slack_logging_callback = LambdaCallback(
        on_epoch_end=lambda epoch, logs: requests.post(
            url=url,
            data=json.dumps(
                dict(
                    channel='#deep_callbacks',
                    attachments=[
                        dict(
                            fields=[
                                dict(value=json.dumps(dict(logs)))
                            ]
                        )
                    ]
                )
            )
        )
    )
    return slack_logging_callback

あとは、modelを学習する時に callbacksの引数にslack_logging()を追加すれば完了です!

model.fit(x_train, 
          y_train, 
          ..., 
          callbacks=[slack_logging()])

もっといい方法があれば教えて下さい。
学習経過のプロットを更新して画像をpostしてみたい...

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4