Help us understand the problem. What is going on with this article?

chainerにearly stoppingを追加してもらった話

More than 3 years have passed since last update.

Chainer, Early Stopping

下記の2つのプルリクエストを通して,
chainerにearly stoppingを追加してもらいました.
(とても丁寧なレビューをしていただいた徳居さんに感謝...!)

このearly stoppingは,kerasのEarlyStoppingを翻訳した形で実装しています.
これの意味するところは,EarlyStoppingTriggerは学習を打ち切る処理のみを行なっているということです.

学習停止時点までで監視していた指標でもっとも良い性能を発揮した重みを読み込むためには,
@koreyouさんがChainerでのEarly stoppingを再考するで紹介してくださっているように,
MaxValueTrigger(MinValueTrigger)とsave/restoreを組み合わせた機構をtrainerに追加する必要があります.
これはkerasのModelCheckpointに相当します.

early stoppingを使うためには,以下のようにトリガを作成します.
monitorでearly stoppingが監視する指標を設定します.
max_triggerはearly stoppingが起きなかった場合にどこまで学習を行うかを指定します.(exampleでの該当箇所)

stop_trigger = triggers.EarlyStoppingTrigger(
    monitor='validation/main/loss',
    max_trigger=(20, 'epoch'))

あとは,このstop_triggerをtrainerに渡してあげればよいです.(exampleでの該当箇所)

trainer = training.Trainer(updater, stop_trigger, out=args.out)

つかってください,よろしくお願いします!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away