Batch Normalization Layerについて

7 views (last 30 days)
FF
FF on 15 Oct 2019
Commented: FF on 16 Oct 2019
MATLABでAIで領域抽出の研究を行っています。
元々学習にとても時間がかかるようなデータ数で学習を行っています。いつもは学習がすべて完了するまで待つのではなく過学習が起こった段階でキャンセルをして止めていました。
今回、Batch Normalization LayerをU-netに追加して学習を行おうと思い学習させ、学習途中に保存しているネットワークでセグメンテーションを行おうとしたのですが
学習が完了する前にバッチ正規化層でネットワークを使用することが出来ません。trainNetworkを使用して学習を完了させてください。
というエラーが出てきました。
学習はいつもmaxEpochsを100にして行っていました。途中で学習を終了させ、ネットワークを使用したい場合普通にキャンセルで止めてもネットワークを使用する事はできますでしょうか?
または、途中に保存しているネットワークをtrainNetworkを使用して学習を完了させる方法を教えて頂きたいです。
よろしくお願いします。
  1 Comment
michio
michio on 16 Oct 2019
検索用に対応する英語のエラーメッセージを記しておきます。
Unable to use networks with batch normalization layers before training is complete. Use trainNetwork to complete network training.
学習が完了する前に、バッチ正規化層でネットワークを使用することはできません。trainNetwork を使用してネットワークの学習を完了させてください。

Sign in to comment.

Accepted Answer

Kenta
Kenta on 16 Oct 2019
こんにちは。
訓練・検証・テストに分けて、検証データの結果を見ながら早期終了をした、そして、そこでの学習器を得たという認識でこの回答を書いています。
ただ、「学習途中に保存しているネットワークで」とありますが、それは下の方法をすでに試したということでしょうか?その場合は、また異なる方法が必要かもしれません。
上のリンクで、checkpointpathとあります。そのように、関数で指定すれば各エポック後に指定したパスに学習器が保存されます。任意のエポックでの学習器を取り出したいのであればそのようにするのが手軽かと思います。
ただ、早期終了で得た学習器がエラーを返すならこの方法でも同様かもしれません。ひとまず、私がうまく質問者様の内容をくみとれていない気もしますので、また返信いただけると幸いです。
  6 Comments
michio
michio on 16 Oct 2019
こちらに似た質問がありましたが、理由はすでに議論されている通りです。
上では 1 エポックだけ 'InitialLearnRate' を小さくして学習させる、というコメントもついています。
FF
FF on 16 Oct 2019
お二方ともありがとうございます。
リンク先を見て勉強しようと思います。

Sign in to comment.

More Answers (0)

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!