なぜ、trainNetwork 関数で学習すると学習の途中経過がNaNになりますか?
2 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2017 年 5 月 19 日
回答済み: MathWorks Support Team
2017 年 5 月 19 日
trainNetwork関数を利用して、学習を進めています。
ネットワークのパラメータを変更しながら、学習すると、
パラメータや学習データによって、「Mini-batch Loss」等の途中経過の値が「NaN」になることがあり、モデルが作成できない状況が発生します。
採用された回答
MathWorks Support Team
2017 年 5 月 19 日
学習ログの出力結果の一部が「NaN」になる場合は、設定している学習率が高すぎる場合に生じる傾向があります。
この問題を抑制する方法としては、以下が検討頂ける項目となります。
(1) 初期の学習率を小さく設定する
→ trainingOptions の InitialLearnRate を 既定の 0.01 よりも小さい値に設定します
(2) 学習率を学習時に可変になるように設定する
→ trainingOptions の LearnRateSchedule を 既定の "none" から "piecewise" に変更します。現状では、学習率は常に固定値を利用します。
関連する学習率を可変にするパラメータに該当する項目としては、
InitialLearnRate
LearnRateDropFactor
LearnRateDropPeriod
となります。
InitialLearnRate は、上記での紹介と重複となりますが初期の学習率を設定します。
(既定では、 0.01 と設定されます)
LearnRateDropFactor は、実際にどの程度学習率を変更させるかの調整値となります。
既定では、0.1 と設定されますが、 0 ~ 1 の範囲で、減衰率を設定します。
LearnRateDropPeriod は、何Epoch 毎に更新を行うかの調整パラメータとなります。
既定では 10 と設定されております。
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Deep Learning Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!