。
畳み込み畳み込みニューラルネットワークのの层のの说明に従ってニューラルネットワークの层を定义したら,次のステップはネットワークの学习オプションの设定です。关数trainingOptions
を使用してグローバル学习パラメーターを定义します。ネットワークに学习させるには,trainingOptions
が返すオブジェクトを关数Trainnetwork.
への入力引数として使用します。次に例を示します。
选择= trainingOptions(“亚当”);trainedNet = trainNetwork(数据、层选项);
学习可能なパラメーターのある层には,学习パラメーターを调节するためのオプションもあります。详细については,畳み込み层と全结合层のパラメーターの设定を参照してください。
Trainnetwork.
では,确率的勾配降下法のさまざまなバリアントを使用したネットワーク学习が可能です。trainingOptions
の引数solverName
を使用して,最适化アルゴリズムを指定します。损失を最小化するために,これらのアルゴリズムは,损失关数の负の勾配の方向に小さなステップで进み,ネットワークパラメーターを更新します。
'亚当'
(自适应矩估计,适応モーメント推定)ソルバーは,多くの场合,最初に试すのに适したオプティマイザーです。'rmsprop'
(平方根平均二乘伝播)および'sgdm'
(モーメンタム項付き確率的勾配降下法)オプティマイザーを試して,学習が改善されるかを確認することもできます。どのソルバーがより有効に機能するかは問題によって異なります。さまざまなソルバーの詳細は,确率的勾配降下法を参照してください。
ソルバーは,各ステップでデータのサブセットを使用してパラメーターを更新します。このサブセットを “ミニバッチ”と呼びます。ミニバッチのサイズは,trainingOptions
の名前と値のペアの引数'minibatchsize'
を使用して指定できます。それぞれのパラメーター更新を“反”復と呼びます。データセット全体を一巡することを1“エポック” と呼びます。学习するエポックの最大回数は,trainingOptions
の名前と値のペアの引数'maxepochs'
を使用して指定できます。既定値は30ですが,小规模なネットワークの场合や,学习の大部分が既に済んでいる微调整や転移学习の场合には,より小さい数のエポックを选択することもできます。
既定では,学习前に1回,データがシャッフルされます。この设定は,名前と値のペアの引数'洗牌'
を使用して変更できます。
グローバル学習率は,trainingOptions
の名前と値のペアの引数'italllearnrate'
を使用して指定できます。既定では,Trainnetwork.
は学习プロセス全体でこの値を使用します。特定のエポック数ごとに,学习率に系数を乘算して学习率を変更することを选択できます。学习プロセス全体で小さな固定の学习率を使用する代わりに,学习の初期は大きな学习率を选択し,最适化しながらこの値を徐々に小さくできます。そうすることで学习时间が短缩されるのと同时に,学习の进行に合わせて损失の最小値に向けてステップをより小さくできます。
ヒント
学習中にミニバッチの損失が南
になる场合,学习率が高すぎると考えられます。学习率をたとえば3分の1に下げて,ネットワーク学习を再开してみてください。
学习率を徐々に小さくするには,名前と値のペアの引数'LearnRateSchedule', '分段'
を使用します。このオプションを選択すると,Trainnetwork.
は10エポックごとに0.1の系数を初期学习率に乘算します。初期学习率からの缩小に使用する系数とエポック数は,名前と値のペアの引数'学习ropfactor'
と'LearnRateDropPeriod'
をそれぞれ使用して指定できます。
学習中にネットワークの検証を実行するには,trainingOptions
の名前と値のペアの引数“ValidationData”
を使用して,検证データを指定します。既定では,Trainnetwork.
は50回の反复ごとに,検证データの応答を予测し検证の损失と精度(回帰ネットワークの平方根平均二乘误差)を计算することによって,ネットワークを検证します。検证频度は,名前と値のペアの引数“ValidationFrequency”
を使用して変更できます。ネットワークに予测时と学习中で动作が异なる层(ドロップアウト层など)がある场合,検证精度が学习(ミニバッチ)精度より高くなる可能性があります。検证データを使用して,検证损失が减少しなくなったときに学习を自动的に停止することもできます。自动検证停止をオンにするには,名前と値のペアの引数'ValidationPatience'
を使用します。
学習中に一定の間隔で検証を実行すると,ネットワークが学習データに過適合しているかどうかを判断するのに役立ちます。よくある問題は,ネットワークが学習データを単に”記憶”したにすぎず,新しいデータについて正確な予測を可能にする一般的な特徴を学習していないことです。ネットワークが過適合しているかどうかを確認するには,学習損失および学習精度を対応する検証メトリクスと比較します。学習損失が検証損失より大幅に小さい,または学習精度が検証精度よりも大幅に高い場合,ネットワークは過適合しています。
过适合を抑えるために,データ拡张の追加を试すことができます。AugmentedimageGedataStore.
を使用して,入力イメージのランダム変換を実行します。これにより,ネットワークがオブジェクトの位置や向きを正確に記憶することを防止できます。また,名前と値のペアの引数'L2Regularization'
を使用して大号2正则化を大きくしたり,畳み込み层の后にバッチ正规化层を使用したり,ドロップアウト层を追加したりすることも试せます。
GPUが利用可能な場合,既定ではTrainnetwork.
はそれを学习に使用します。そうでない场合,Trainnetwork.
はCPUを使用します。または,名前と値のペアの引数'executionenvironment'
を使用して,目的の実行環境を指定することもできます。1つのCPU ('中央处理器'
),1つのGPU(“图形”
),复数のGPU('多gpu'
),ローカルの并列プールまたは计算クラスター('平行线'
)を指定できます。'中央处理器'
以外のすべてのオプションには并行计算工具箱™が必要です。GPUでの学習には以3.0计算能力上のCUDA®対応GPUが必要です。
深度学习工具箱™では,学习の际,エポックの终了ごとに,ネットワークを.MATファイルとして保存できます。この定期的な保存は,ネットワークまたはデータセットが大规模であり,学习に时间がかかる场合に特に便利です。学习が何らかの理由で中断された场合,最后に保存されたチェックポイントネットワークから学习を再开できます。Trainnetwork.
にチェックポイントネットワークを保存させる场合は,trainingOptions
の名前と値のペアの引数“CheckpointPath”
を使用してパス名を指定しなければなりません。指定したパスが存在していない场合,trainingOptions
はエラーを返します。
Trainnetwork.
は,チェックポイントネットワークファイルに一意の名前を自動的に割り当てます。例の名前net_checkpoint__351__2018_04_12__18_09_52.mat
で,351は反复回数,2018_04_12
は日付,18_09_52
はTrainnetwork.
がネットワークを保存した时刻を表します。チェックポイントネットワークファイルは,ダブルクリックするか,コマンドラインで読み込みコマンドを使用すると,読み込むことができます。次に例を示します。
负载net_checkpoint__351__2018_04_12__18_09_52.mat
Trainnetwork.
の入力引数に使用することで,学习を再开できます。次に例を示します。
trainNetwork(XTrain,YTrain,net.Layers,期权)
学习パラメーターは,畳み込み层や全结合层など,学习可能なパラメーターのある层にtrainingOptions
で指定したグローバル値とは異なる値に設定できます。たとえば,バイアスまたは重みの学習率を調整するために,層のBiasLearnRateFactor
またはWeightLearnRateFactor
プロパティの値をそれぞれ指定できます。关数Trainnetwork.
は,trainingOptions
を使用して指定された学习率とこれらの系数を乘算します。同様に,これらの层の重みとバイアスの大号2正則化係数は,BiasL2Factor
プロパティおよびWeightL2Factor
プロパティをそれぞれ指定することによって指定できます。Trainnetwork.
は,trainingOptions
を使用して指定されたL2正则化系数とこれらの系数を乘算します。
层の重みは学习可能なパラメーターです。层の重量
プロパティを使用して,重みに直接,初期値を指定できます。ネットワークの学習時に,層の重量
プロパティが空ではない场合,Trainnetwork.
は重量
プロパティを初期値として使用します。重量
プロパティが空の場合,Trainnetwork.
は層のWeightsInitializer
プロパティによって指定された初期化子を使用します。
ネットワークは,ネットワークの层および学习パラメーターを指定した后,学习データを使用して学习させます。次の例にあるように,データ,层,学习オプションはすべて关数Trainnetwork.
の入力引数です。
层= [imageInputLayer([28 28 1])convolution2dLayer(5,20)reluLayer maxPooling2dLayer(2, '步',2)fullyConnectedLayer(10)softmaxLayer classificationLayer];选择= trainingOptions(“亚当”);convnet = trainNetwork(数据,层,选项);
学习データは,行列,表,またはimageageAtastore.
オブジェクトにすることができます。详细は,关数Trainnetwork.
のリファレンスページを参照してください。
Convolution2dLayer
|FullyConnectedLayer
|trainingOptions
|Trainnetwork.