なぜ、trainNetwork 関数で学習すると学習​の途中経過がNaNに​なりますか?

2 次查看(过去 30 天)
trainNetwork関数を利用して、学習を進めています。
ネットワークのパラメータを変更しながら、学習すると、
パラメータや学習データによって、「Mini-batch Loss」等の途中経過の値が「NaN」になることがあり、モデルが作成できない状況が発生します。

采纳的回答

MathWorks Support Team
学習ログの出力結果の一部が「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 个)

类别

Help CenterFile Exchange 中查找有关 Deep Learning Toolbox 的更多信息

标签

尚未输入任何标签。

产品


版本

R2017a

Community Treasure Hunt

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

Start Hunting!