背景
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してみたい...