Main Content

TrainingOptionsSGDM

モーメンタム項付き確率的勾配降下法の学習オプション

説明

TrainingOptionsSGDM オブジェクトを使用して、学習率の情報、L2 正則化係数、ミニバッチのサイズなど、モーメンタム項付き確率的勾配降下法オプティマイザーの学習オプションを設定します。

作成

trainingOptions を使用し、最初の入力引数として "sgdm" を指定し、TrainingOptionsSGDM オブジェクトを作成します。

プロパティ

すべて展開する

SGDM

学習に使用するエポックの最大数 (データを一巡する回数)。正の整数として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

学習の各反復で使用するミニバッチのサイズ。正の整数として指定します。ミニバッチとは、損失関数の勾配を評価し、重みを更新するために使用される学習セットのサブセットのことです。

ミニバッチのサイズで学習サンプルの数を割り切ることができない場合、ソフトウェアは、各エポックの最後のミニバッチにちょうど収まらない学習データを破棄します。ミニバッチのサイズが学習サンプルの数より小さい場合、ソフトウェアはいかなるデータも破棄しません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

データのシャッフルのオプション。次のいずれかの値として指定します。

  • "once" — 学習データと検証データを学習前に 1 回シャッフルします。

  • "never" — データをシャッフルしません。

  • "every-epoch" — 各学習エポックの前に学習データをシャッフルし、ニューラル ネットワークの各検証の前に検証データをシャッフルします。ミニバッチのサイズで学習サンプルの数を割り切ることができない場合、ソフトウェアは、各エポックの最後のミニバッチにちょうど収まらない学習データを破棄します。エポックごとに同じデータが破棄されるのを回避するには、Shuffle 学習オプションを "every-epoch" に設定します。

学習に使用される初期学習率。正のスカラーとして指定します。

学習率が小さすぎる場合、学習に時間がかかることがあります。学習率が大きすぎる場合、学習結果が準最適になったり、発散したりすることがあります。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

この プロパティ は読み取り専用です。

学習率のスケジュールの設定。構造体として指定します。LearnRateScheduleSettings にはフィールド Method があります。このフィールドは、学習率を調整するメソッドのタイプを指定します。以下のメソッドを指定できます。

  • 'none' — 学習率は学習全体を通じて一定です。

  • 'piecewise' — 学習中に学習率を定期的に下げます。

Method'piecewise' の場合、LearnRateScheduleSettings にさらに 2 つのフィールドが含まれます。

  • DropRateFactor — 学習中の学習率を低下させる乗法係数

  • DropPeriod — 学習中の各学習率調整の合間で通過するエポック数

学習率スケジュールの設定は、trainingOptions を使用して指定します。

データ型: struct

モーメンタム項付き確率的勾配降下法における前の反復から現在の反復へのパラメーター更新ステップの寄与。0 から 1 までのスカラーとして指定します。

0 は前のステップからの寄与がないことを意味し、値 1 は前のステップからの寄与が最大であることを意味します。ほとんどのタスクにおいて、既定値で良い結果が得られます。

詳細については、モーメンタム項付き確率的勾配降下法を参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

データ形式

R2023b 以降

入力データの次元の説明。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。

InputDataFormats"auto" の場合、ソフトウェアは、ネットワークの入力で必要とされる形式を使用します。そうでない場合、ソフトウェアは、該当するネットワーク入力に対して指定された形式を使用します。

データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

各文字は以下のとおりです。

  • "S" — 空間

  • "C" — チャネル

  • "B" — バッチ

  • "T" — 時間

  • "U" — 指定なし

たとえば、シーケンスのバッチを含み、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。この配列の形式を "CBT" (チャネル、バッチ、時間) として指定できます。

"S" または "U" のラベルが付いた次元については、複数回指定できます。"C""B""T" のラベルについては、1 回のみ使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。

複数の入力をもつニューラル ネットワーク net の場合、入力データ形式の配列を指定します。ここで、InputDataFormats(i) は入力 net.InputNames(i) に対応します。

詳細については、Deep Learning Data Formatsを参照してください。

データ型: char | string | cell

R2023b 以降

ターゲット データの次元の説明。次のいずれかの値として指定します。

  • "auto" — ターゲット データと入力データの次元の数が同じ場合、関数 trainnetInputDataFormats で指定された形式を使用します。ターゲット データと入力データの次元の数が異なる場合、関数 trainnet は損失関数で必要とされる形式を使用します。

  • string 配列、文字ベクトル、または文字ベクトルの cell 配列 — 関数 trainnet はユーザーが指定したデータ形式を使用します。

データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

各文字は以下のとおりです。

  • "S" — 空間

  • "C" — チャネル

  • "B" — バッチ

  • "T" — 時間

  • "U" — 指定なし

たとえば、シーケンスのバッチを含み、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。この配列の形式を "CBT" (チャネル、バッチ、時間) として指定できます。

"S" または "U" のラベルが付いた次元については、複数回指定できます。"C""B""T" のラベルについては、1 回のみ使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。

詳細については、Deep Learning Data Formatsを参照してください。

データ型: char | string | cell

監視

ニューラル ネットワークの学習中に表示するプロット。次のいずれかの値として指定します。

  • "none" — 学習中にプロットを表示しません。

  • "training-progress" — 学習の進行状況をプロットします。

プロットには、ミニバッチ損失、検証損失、Metrics プロパティで指定された学習ミニバッチと検証のメトリクス、および学習の進行状況に関する追加情報が表示されます。

学習後にプログラムで学習の進行状況プロットを開いたり閉じたりするには、関数 trainnet の 2 番目の出力で関数 show および close を使用します。Plots 学習オプションが "none" として指定されている場合でも、関数 show を使用して学習の進行状況を表示できます。

プロットの詳細については、深層学習における学習の進行状況の監視を参照してください。

R2023b 以降

追跡するメトリクス。組み込みメトリクス名の文字ベクトルまたは string スカラー、名前の string 配列、組み込みまたはカスタムのメトリクス オブジェクト、関数ハンドル (@myMetric)、deep.DifferentiableFunction オブジェクトとして指定するか、名前、メトリクス オブジェクト、および関数ハンドルの cell 配列として指定します。

  • 組み込みメトリクス名 — 組み込みメトリクス名の string スカラー、文字ベクトル、または string 配列としてメトリクスを指定します。サポートされている値は、"accuracy""auc""fscore""precision""recall"、および "rmse" です。

  • 組み込みメトリクス オブジェクト — より高い柔軟性が必要な場合は、組み込みメトリクス オブジェクトを使用できます。ソフトウェアは、次の組み込みメトリクス オブジェクトをサポートします。

    組み込みメトリクス オブジェクトを作成するときは、平均化のタイプ、タスクが単一ラベルか複数ラベルかなどの追加オプションを指定できます。

  • カスタム メトリクス関数ハンドル — 組み込みメトリクス以外のメトリクスが必要な場合は、関数ハンドルを使用してカスタム メトリクスを指定できます。関数の構文は metric = metricFunction(Y,T) でなければなりません。ここで、Y はネットワーク予測に対応し、T はターゲット応答に対応します。複数の出力をもつネットワークの場合、構文は metric = metricFunction(Y1,…,YN,T1,…TM) でなければなりません。ここで、N は出力の数、M はターゲットの数です。詳細については、Define Custom Metric Functionを参照してください。

    メモ

    ミニバッチに検証データが含まれる場合、ソフトウェアは各ミニバッチの検証メトリクスを計算し、それらの値の平均を返します。メトリクスによっては、この動作のために、検証セット全体を一度に使用してメトリクスを計算する場合とは異なるメトリクス値を取ることがあります。ほとんどの場合は、同様の値になります。検証データに対してバッチ平均されていないカスタム メトリクスを使用するには、カスタム メトリクス オブジェクトを作成しなければなりません。詳細については、Define Custom Deep Learning Metric Objectを参照してください。

  • deep.DifferentiableFunction オブジェクト (R2024a 以降) — カスタム逆方向関数をもつ関数オブジェクト。詳細については、Define Custom Deep Learning Operationsを参照してください。

  • カスタム メトリクス オブジェクト — より詳細なカスタマイズが必要な場合は、独自のカスタム メトリクス オブジェクトを定義できます。カスタム メトリクスの作成方法を示す例については、Define Custom F-Beta Score Metric Objectを参照してください。カスタム メトリクスの作成に関する一般的な情報については、Define Custom Deep Learning Metric Objectを参照してください。カスタム メトリクスは、関数 trainingOptionsMetrics オプションとして指定します。

このオプションは、関数 trainnet と関数 trainBERTDocumentClassifier (Text Analytics Toolbox) のみをサポートします。

例: Metrics=["accuracy","fscore"]

例: Metrics={"accuracy",@myFunction,precisionObj}

R2024a 以降

早期に停止して最適なネットワークを返すのに使用されるオブジェクティブ メトリクスの名前。string スカラーまたは文字ベクトルとして指定します。

このメトリクスの名前は、"loss" であるか、名前と値の引数 Metrics で指定されたメトリクスの名前と同じでなければなりません。関数ハンドルで指定されたメトリクスはサポートされていません。ObjectiveMetricName の値をカスタム メトリクスの名前として指定するには、カスタム メトリクス オブジェクトの Maximize プロパティの値が空であってはなりません。詳細については、Define Custom Deep Learning Metric Objectを参照してください。

早期に停止するためのオブジェクティブ メトリクスの指定に関する詳細については、ValidationPatience を参照してください。オブジェクティブ メトリクスを使用して最適なネットワークを返すことに関する詳細については、OutputNetwork を参照してください。

データ型: char | string

コマンド ウィンドウに学習の進行状況の情報を表示するためのフラグ。1 (true) または 0 (false) として指定します。

関数 trainnet を使用する場合、詳細出力には次の変数を含むテーブルが表示されます。

変数説明
Iteration反復回数。
Epochエポック数。
TimeElapsed経過時間。時間、分、秒で示されます。
LearnRate学習率。
TrainingLoss学習損失。
ValidationLoss検証損失。検証データを指定しない場合、ソフトウェアはこの情報を表示しません。

学習オプションで追加のメトリクスを指定した場合、詳細出力にもそれらのメトリクスが表示されます。たとえば、Metrics 学習オプションを "accuracy" に設定した場合、変数 TrainingAccuracy および ValidationAccuracy もこの情報に含まれます。

学習が停止すると、詳細出力に停止の理由が表示されます。

検証データを指定するには、ValidationData 学習オプションを使用します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

コマンド ウィンドウへの表示間の反復回数を示す、詳細出力の頻度。正の整数として指定します。

学習中にニューラル ネットワークを検証する場合、ソフトウェアは、検証が行われるたびにコマンド ウィンドウにも出力します。

このプロパティを有効にするには、Verbose 学習オプションを 1 (true) に設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

検証

学習中の検証で使用するデータ。[] として指定するか、検証予測子と検証ターゲットを含むデータストア、table、cell 配列、または minibatchqueue オブジェクトとして指定します。

学習中に、ソフトウェアは検証データを使用して検証損失とメトリクス値を計算します。検証頻度を指定するには、ValidationFrequency 学習オプションを使用します。検証データを使用して、検証オブジェクティブ メトリクスが改善されなくなったときに学習を自動的に停止することもできます。既定では、オブジェクティブ メトリクスは損失に設定されます。自動検証停止をオンにするには、ValidationPatience 学習オプションを使用します。

ValidationData[] の場合、学習中にニューラル ネットワークが検証されません。

ニューラル ネットワークに予測時と学習時で動作が異なる層 (ドロップアウト層など) がある場合、検証損失が学習損失より低くなる可能性があります。

検証データは、Shuffle 学習オプションに従ってシャッフルされます。Shuffle"every-epoch" の場合、検証データはニューラル ネットワークの各検証の前にシャッフルされます。

サポートされている形式は、使用する学習関数によって異なります。

関数 trainnet

データストア、minibatchqueue オブジェクト、または cell 配列 {predictors,targets} として検証データを指定します。ここで、predictors には検証予測子を格納し、targets には検証ターゲットを格納します。関数 trainnet でサポートされているいずれかの形式を使用して、検証予測子と検証ターゲットを指定します。

詳細については、関数 trainnet の入力引数を参照してください。

関数 trainBERTDocumentClassifier (Text Analytics Toolbox)

検証データを次のいずれかの値として指定します。

  • cell 配列 {documents,targets}。ここで、documents には入力文書を格納し、targets には文書のラベルを格納する。

  • table。ここで、最初の変数には入力文書を格納し、2 番目の変数には文書のラベルを格納する。

詳細については、関数 trainBERTDocumentClassifier (Text Analytics Toolbox) の入力引数を参照してください。

反復回数で示されるニューラル ネットワークの検証の頻度。正の整数として指定します。

ValidationFrequency の値は、検証メトリクスの評価間の反復回数です。検証データを指定するには、ValidationData 学習オプションを使用します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

ニューラル ネットワークの学習の検証を停止するまでの待機回数。正の整数または Inf として指定します。

ValidationPatience は、ニューラル ネットワークの学習が停止するまでに、検証セットでのオブジェクティブ メトリクスが前の最良値以下になることが許容される回数を指定します。ValidationPatienceInf の場合、検証メトリクスの値によって学習が早期に停止することはありません。ソフトウェアは、メトリクスの Maximize プロパティの指定に従って、メトリクスを最大化または最小化しようと試みます。オブジェクティブ メトリクスが "loss" の場合、ソフトウェアは損失値を最小化しようと試みます。

返されるニューラル ネットワークは、OutputNetwork 学習オプションによって異なります。検証メトリクス値が最良のニューラル ネットワークを返すようにするには、OutputNetwork 学習オプションを "best-validation" に設定します。

R2024a より前: ソフトウェアは、検証損失値を使用して検証の許容回数を計算します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

学習完了時に返すニューラル ネットワーク。次のいずれかとして指定します。

  • "auto"ValidationData が指定されている場合は "best-validation" を使用します。それ以外の場合は "last-iteration" を使用します。

  • "best-validation" – 検証メトリクス値が最良となる学習反復に対応するニューラル ネットワークを返します。最適化するメトリクスは ObjectiveMetricName オプションで指定します。このオプションを使用するには、ValidationData 学習オプションを指定しなければなりません。

  • "last-iteration" – 最後の学習反復に対応するニューラル ネットワークを返す。

正則化と正規化

L2 正則化 (重み減衰) の係数。非負のスカラーとして指定します。詳細については、L2 正則化を参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

入力層の正規化をリセットするオプション。次のいずれかに指定します。

  • 1 (true) — 入力層の正規化統計量をリセットし、学習時に再計算します。

  • 0 (false) — 正規化統計量が空の場合、学習時に計算します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

バッチ正規化層の統計量を評価するモード。次のいずれかとして指定します。

  • "population" — 母集団の統計量を使用します。学習終了後に学習データが再度渡され、その結果得られる平均と分散を使用して最終的な統計量が決定されます。

  • "moving" — 学習中、以下の更新ステップで与えられる実行時推定を使用して統計量を近似します。

    μ*=λμμ^+(1λμ)μσ2*=λσ2σ2^+(1-λσ2)σ2

    ここで、μ*σ2* はそれぞれ更新後の平均と分散、λμλσ2 はそれぞれ平均と分散の減衰値、μ^σ2^ はそれぞれ層入力の平均と分散、μσ2 はそれぞれ移動平均と分散の値の最新値を表します。学習終了後、最後に得られた移動平均と分散の値が使用されます。このオプションは、CPU および単一の GPU による学習のみをサポートします。

  • "auto""moving" オプションを使用します。

勾配クリップ

勾配しきい値。Inf または正のスカラーとして指定します。勾配が GradientThreshold の値を超えた場合、勾配は GradientThresholdMethod 学習オプションに応じてクリップされます。

詳細については、勾配クリップを参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

勾配しきい値を超えた勾配の値をクリップするために使用する勾配しきい値法。次のいずれかに指定します。

  • "l2norm" — 学習可能なパラメーターの勾配の L2 ノルムが GradientThreshold より大きい場合は、L2 ノルムが GradientThreshold に等しくなるように勾配をスケーリングします。

  • "global-l2norm" — グローバル L2 ノルム L が GradientThreshold より大きい場合は、すべての勾配を GradientThreshold/L 倍にスケーリングします。グローバル L2 ノルムでは、すべての学習可能なパラメーターが考慮されます。

  • "absolute-value" — 学習可能なパラメーターの勾配に含まれる偏微分のうち、絶対値が GradientThreshold より大きいものについては、偏微分の符号を維持したまま、大きさが GradientThreshold に等しくなるように偏微分をスケーリングします。

詳細については、勾配クリップを参照してください。

シーケンス

入力シーケンスのパディング、切り捨て、または分割を行うオプション。次のいずれかに指定します。

  • "longest" — 各ミニバッチで、最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが、パディングによってニューラル ネットワークにノイズが生じることがあります。

  • "shortest" — 各ミニバッチで、最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用するとパディングは追加されませんが、データが破棄されます。

入力シーケンスのパディング、切り捨て、および分割の効果の詳細は、シーケンスのパディングと切り捨てを参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

パディングまたは切り捨ての方向。次のいずれかに指定します。

  • "right" — シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイム ステップで始まり、シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。

  • "left" — シーケンスの左側に対してパディングまたは切り捨てを行います。シーケンスが同じタイム ステップで終わるように、シーケンスの先頭に対して切り捨てまたはパディングの追加が行われます。

再帰層は 1 タイム ステップずつシーケンス データを処理するため、再帰層の OutputMode プロパティが "last" の場合、最後のタイム ステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンス データの左側に対してパディングまたは切り捨てを行うには、SequencePaddingDirection オプションを "left" に設定します。

sequence-to-sequence ニューラル ネットワークの場合 (各再帰層について OutputMode プロパティが "sequence" である場合)、最初のタイム ステップでパディングを行うと、それ以前のタイム ステップの予測に悪影響を与える可能性があります。シーケンスの右側に対してパディングまたは切り捨てを行うには、SequencePaddingDirection オプションを "right" に設定します。

シーケンスのパディングと切り捨ての効果の詳細については、シーケンスのパディングと切り捨てを参照してください。

入力シーケンスをパディングする値。スカラーとして指定します。

ニューラル ネットワーク全体にエラーが伝播される可能性があるため、NaN でシーケンスをパディングしないでください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

ハードウェアと高速化

ニューラル ネットワークの学習用のハードウェア リソース。次のいずれかの値として指定します。

  • "auto" – 利用可能な場合、ローカル GPU を使用します。そうでない場合、ローカル CPU を使用します。

  • "cpu" – ローカル CPU を使用します。

  • "gpu" – ローカル GPU を使用します。

  • "multi-gpu" — 既定のクラスター プロファイルに基づいてローカルの並列プールを使用して、1 つのマシンで複数の GPU を使用します。現在の並列プールがない場合、使用可能な GPU の数と等しいプール サイズの並列プールが起動されます。

  • "parallel-auto" – ローカルまたはリモートの並列プールを使用します。現在の並列プールがない場合、既定のクラスター プロファイルを使用して 1 つのプールが起動されます。プールから GPU にアクセスできる場合、固有の GPU をもつワーカーのみが学習計算を実行し、余ったワーカーはアイドル状態になります。プールに GPU がない場合、代わりに使用可能なすべての CPU ワーカーで学習が実行されます。 (R2024a 以降)

    R2024a より前: 代わりに "parallel" を使用してください。

  • "parallel-cpu" – ローカルまたはリモートの並列プールにある CPU リソースを使用し、GPU は無視します。現在の並列プールがない場合、既定のクラスター プロファイルを使用して 1 つのプールが起動されます。 (R2023b 以降)

  • "parallel-gpu" – ローカルまたはリモートの並列プールにある GPU を使用します。余ったワーカーはアイドル状態になります。現在の並列プールがない場合、既定のクラスター プロファイルを使用して 1 つのプールが起動されます。 (R2023b 以降)

"gpu""multi-gpu""parallel-auto""parallel-cpu"、および "parallel-gpu" のオプションを使用するには、Parallel Computing Toolbox™ が必要です。深層学習に GPU を使用するには、サポートされている GPU デバイスもなければなりません。サポートされているデバイスについては、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。これらのいずれかのオプションの選択時に Parallel Computing Toolbox または適切な GPU を利用できない場合、エラーが返されます。

さまざまな実行環境をどのような場合に使用するかの詳細は、Scale Up Deep Learning in Parallel, on GPUs, and in the Cloudを参照してください。

並列学習の実行時に性能の改善を確認するには、MiniBatchSize および InitialLearnRate 学習オプションを GPU の数でスケール アップしてみてください。

R2024a 以降

学習時にデータストアからデータを取得して前処理を行うための環境。次のいずれかの値として指定します。

  • "serial" – データの取得と前処理は逐次実行されます。

  • "background" – バックグラウンド プールを使用してデータの取得と前処理が行われます。

  • "parallel" – 並列ワーカーを使用してデータの取得と前処理が行われます。ローカル プールが開かれていなければ、ソフトウェアは既定のプロファイルを使用して並列プールを開きます。ローカルではない並列プールはサポートされません。このオプションを使用するには、Parallel Computing Toolbox が必要です。並列で学習させる場合 (ExecutionEnvironment オプションが "parallel-auto""parallel-cpu""parallel-gpu"、または "multi-gpu" の場合)、このオプションはサポートされません。

"background" オプションまたは "parallel" オプションを使用するには、入力データストアがサブセット化可能または分割可能でなければなりません。カスタム データストアには matlab.io.datastore.Subsettable クラスが実装されていなければなりません。

Shuffle オプションが "never" の場合、"background" オプションおよび "parallel" オプションはサポートされません。

ミニバッチに大幅な前処理が必要な場合は、"background" オプションまたは "parallel" オプションを使用します。前処理環境の詳細については、並列学習およびバックグラウンド前処理へのデータストアの使用を参照してください。

R2024a より前: データを並列で前処理するには、DispatchInBackground 学習オプションを 1 (true) に設定します。

R2024a 以降

パフォーマンスの最適化。次のいずれかの値として指定します。

  • "auto" – 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。

  • "none" – すべての最適化を無効にします。

チェックポイント

チェックポイント ニューラル ネットワークの保存用のパス。string スカラーまたは文字ベクトルとして指定します。

  • パスを指定しない (既定の "" を使用する) 場合、チェックポイント ニューラル ネットワークは保存されません。

  • パスを指定すると、ソフトウェアによってこのパスにチェックポイント ニューラル ネットワークが保存され、各ニューラル ネットワークに一意の名前が割り当てられます。その後、いずれかのチェックポイント ニューラル ネットワークを読み込み、そのニューラル ネットワークから学習を再開できます。

    フォルダーが存在していない場合、チェックポイント ニューラル ネットワークを保存するパスを指定する前に、まずフォルダーを作成しなければなりません。指定したパスが存在していない場合、ソフトウェアはエラーをスローします。

データ型: char | string

チェックポイント ニューラル ネットワークを保存する頻度。正の整数として指定します。

CheckpointFrequencyUnit"epoch" の場合、ソフトウェアは CheckpointFrequency エポックごとにチェックポイント ニューラル ネットワークを保存します。

CheckpointFrequencyUnit"iteration" の場合、ソフトウェアは CheckpointFrequency 回の反復ごとにチェックポイント ニューラル ネットワークを保存します。

このオプションは、CheckpointPath が空でない場合にのみ有効です。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

チェックポイントの頻度の単位。"epoch" または "iteration" として指定します。

CheckpointFrequencyUnit"epoch" の場合、ソフトウェアは CheckpointFrequency エポックごとにチェックポイント ニューラル ネットワークを保存します。

CheckpointFrequencyUnit"iteration" の場合、ソフトウェアは CheckpointFrequency 回の反復ごとにチェックポイント ニューラル ネットワークを保存します。

このオプションは、CheckpointPath が空でない場合にのみ有効です。

学習中に呼び出す出力関数。関数ハンドル、または関数ハンドルの cell 配列として指定します。ソフトウェアは、学習の開始前、各反復後、および学習の完了時に関数を 1 回呼び出します。

関数の構文は stopFlag = f(info) でなければなりません。ここで、info は学習の進行状況に関する情報が格納される構造体、stopFlag は学習を早期に停止させることを示すスカラーです。stopFlag1 (true) の場合、ソフトウェアは学習を停止させます。それ以外の場合、ソフトウェアは学習を続行します。

関数 trainnet は、次のフィールドをもつ構造体 info を出力関数に渡します。

フィールド説明
Epochエポック数
Iteration反復回数
TimeElapsed学習開始からの時間
LearnRate反復での学習率
TrainingLoss反復での学習損失
ValidationLoss検証損失 (指定されており、反復時に評価される場合)。
State反復での学習状態。"start""iteration"、または "done" として指定します。

学習オプションで追加のメトリクスを指定した場合、学習情報にもそれらのメトリクスが表示されます。たとえば、Metrics 学習オプションを "accuracy" に設定した場合、フィールド TrainingAccuracy および ValidationAccuracy もこの情報に含まれます。

フィールドが計算されない、または出力関数の特定の呼び出しに関連していない場合、そのフィールドには空の配列が含まれます。

出力関数の使用方法を示す例については、Custom Stopping Criteria for Deep Learning Trainingを参照してください。

データ型: function_handle | cell

すべて折りたたむ

モーメンタム項付き確率的勾配降下法を使用したネットワーク学習の一連のオプションを作成します。5 エポックごとに 0.2 ずつ学習率を下げます。学習のエポックの最大回数を 20 に設定し、反復ごとに 64 個の観測値があるミニバッチを使用します。学習の進行状況プロットをオンにします。

options = trainingOptions("sgdm", ...
    LearnRateSchedule="piecewise", ...
    LearnRateDropFactor=0.2, ...
    LearnRateDropPeriod=5, ...
    MaxEpochs=20, ...
    MiniBatchSize=64, ...
    Plots="training-progress")
options = 
  TrainingOptionsSGDM with properties:

                        Momentum: 0.9000
                InitialLearnRate: 0.0100
                       MaxEpochs: 20
               LearnRateSchedule: 'piecewise'
             LearnRateDropFactor: 0.2000
             LearnRateDropPeriod: 5
                   MiniBatchSize: 64
                         Shuffle: 'once'
             CheckpointFrequency: 1
         CheckpointFrequencyUnit: 'epoch'
                  SequenceLength: 'longest'
        PreprocessingEnvironment: 'serial'
                L2Regularization: 1.0000e-04
         GradientThresholdMethod: 'l2norm'
               GradientThreshold: Inf
                         Verbose: 1
                VerboseFrequency: 50
                  ValidationData: []
             ValidationFrequency: 50
              ValidationPatience: Inf
             ObjectiveMetricName: 'loss'
                  CheckpointPath: ''
            ExecutionEnvironment: 'auto'
                       OutputFcn: []
                         Metrics: []
                           Plots: 'training-progress'
            SequencePaddingValue: 0
        SequencePaddingDirection: 'right'
                InputDataFormats: "auto"
               TargetDataFormats: "auto"
         ResetInputNormalization: 1
    BatchNormalizationStatistics: 'auto'
                   OutputNetwork: 'auto'
                    Acceleration: "auto"

アルゴリズム

すべて展開する

参照

[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.

[2] Murphy, K. P. Machine Learning: A Probabilistic Perspective. The MIT Press, Cambridge, Massachusetts, 2012.

[3] Pascanu, R., T. Mikolov, and Y. Bengio. "On the difficulty of training recurrent neural networks". Proceedings of the 30th International Conference on Machine Learning. Vol. 28(3), 2013, pp. 1310–1318.

バージョン履歴

R2016a で導入

すべて展開する