今回は、学習済のモデルを引き継いで、発展させていく2つの方法を試してみます。
学習済パラメータを引き継ぎ追加学習する2つの方法
ざっくり以下の2つのケースがあります。
- ① ネットワーク構造だけを引き継ぐ方法
- ② ネットワーク+学習済のパラメータ込で引き継ぐ方法
これを個別に見ていきます。
① ネットワーク構造だけを引き継ぐ方法
Traiingタブで左側に学習結果の一覧を表示させて、引き継ぎたいところで、右クリックしてメニューを表示します。
ここで「Open in Edit Tab」を選ぶと、Editタブに選択した学習時点のネットワーク構造が表示されます。
その状態で、名前をつけて保存で、別のプロジェクト名で保存すれば良いわけです。
これは例えば、自動最適化で作られたうちで、まあまあ良い線いってるネットワーク構造があった。
でも、そのままではなくて、もうちょっと層を深くしていってみたい・・とか、それをベースに変更を加えて行きたいときに使えるかなと思います。
② ネットワーク+学習済のパラメータ込で引き継ぐ方法
例として、ネットワーク構造の自動最適化をやってみて、なんとなく良さげなものがあるけど、Epoch数が足らなくて学習が途中で終わってしまっている場合を考えます。
ここで、いちから学習しなおすのは、時間がもったいないです。
途中までいけてる結果を引き継いで、追加学習させたいですよね。
パラメータを引き継ぐ方法
学習結果のところで右クリックしてメニューを表示します。
ここで「Open in EDIT Tab with Weight」 を選びます。
そうすると、Editタブに選択した学習結果のネットワークモデルが表示されます。
この操作で、各レイヤーのプロパティに学習済の重みとバイアスのパラメータが初期値として引き継がれる様にpathが設定されます。
このまま学習を行うと追加学習になります。
あ。
もちろん、Structure Search のチェックがついてたらはずしてくださいね。
パラメータを引き継いで追加学習
これを引き続きで学習させてみました。
確かに、続きのあたりから始まっているのがわかります。
追加学習にはなってますね。
ではでは。