2017/12/18追記
下のアイディアを、もっと扱いやすい形でHyperdash公式に取り込んでもらえました!(PullRequest)
まだドキュメントは無いようですが、以下の仕組みが理解できれば使えるものだと思います。また今度記事書こうと思います。
「ネットワークのトレーニング時間かかるし一日置いとくか」と放置していたら、最初の方でつまづいていたりすることがよくあります。次の日に気づくと悲惨です!
そこで、スマホアプリでリアルタイムに学習経過を見ることのできる便利なサービスhyperdashを使いましょう。
インストールや基本的な動かし方は公式ページにあります。
この記事では少し応用してKerasのコールバックから、hyperdashのapiにつなげる方法を紹介します。
とは言っても、次の二つのファイルを用意するだけで終わりです。
実行は普段通りpython train.py
でOK!
hyperdash_callback.py
from keras.callbacks import Callback
class Hyperdash(Callback):
def __init__(self, exp):
super(Hyperdash, self).__init__()
self.exp = exp
def on_epoch_end(self, epoch, logs=None):
val_acc = logs.get('val_acc')
val_loss = logs.get('val_loss')
if val_acc is not None:
self.exp.metric("val_acc", val_acc)
if val_loss is not None:
self.exp.metric("val_loss", val_loss)
train.py
# 普段のimportに加えて以下の二つを追加
from hyperdash import Experiment
from hyperdash_callback import Hyperdash
def main():
exp = Experiment("Experiment 1") # 宣言以降のログがスマホアプリに送られる
# train dataやmodelを準備するコードをここに書く
# ...
hd_callback = Hyperdash(exp=exp)
callbacks = [hd_callback] # Tensorboardなどのコールバックと併用できる
history = model.fit(x_train, y_train, batch_size=32, verbose=1, epochs=50,
validation_split=0.1, shuffle=True,
callbacks=callbacks)
exp.end() # 無事終了したことを示すためにコードの最後に置く
if __name__ == "__main__":
main()