trainingOptions
R2026b深層学習ニューラル ネットワークの学習のオプション
説明
は、指定されたソルバーの学習オプションを返します。この学習オプション オブジェクトは、options = trainingOptions(solverName)trainnet 関数などの深層学習用学習関数と組み合わせて使用します。
は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、options = trainingOptions(solverName,Name=Value)traininrgOptions("adam",Plots="training-progress") は、Adam ソルバーを使用して学習を行い、学習の進行状況をプロットに表示します。
例
モーメンタム項付き確率的勾配降下法を使用したネットワーク学習の一連のオプションを作成します。5 エポックごとに 0.2 ずつ学習率を下げます。学習のエポックの最大回数を 20 に設定し、反復ごとに 64 個の観測値があるミニバッチを使用します。学習の進行状況プロットをオンにします。
options = trainingOptions("sgdm", ... LearnRateSchedule="piecewise", ... LearnRateDropFactor=0.2, ... LearnRateDropPeriod=5, ... MaxEpochs=20, ... MiniBatchSize=64, ... Plots="training-progress");
入力引数
ニューラル ネットワークの学習用のソルバー。次のいずれかの値として指定します。
確率的ソルバー
確率的ソルバーは、データのミニバッチを反復処理し、反復処理を行うたびにニューラル ネットワークの学習可能なパラメーターを更新します。確率的ソルバーは、大規模なデータ セットに適しています。その他の学習オプションについては、確率的ソルバーのオプションを参照してください。
| 値 | ソルバー名 | 詳細 |
|---|---|---|
"sgdm" | モーメンタム項付き確率的勾配降下法 (SGDM) | |
"rmsprop" | 平方根平均二乗伝播 (RMSProp) | |
"adam" | 適応モーメント推定 (Adam) |
バッチ ソルバー
バッチ ソルバーは、各反復処理でデータ セット全体を処理します。バッチ ソルバーは、単一のバッチで処理できる小規模なネットワークやデータ セットに適しています。その他の学習オプションについては、バッチ ソルバーのオプションを参照してください。
| 値 | ソルバー名 | 詳細 |
|---|---|---|
"lbfgs" (R2023b 以降) | メモリ制限 Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) | |
"lm" (R2024b 以降) | レーベンバーグ・マルカート (LM) |
詳細については、レーベンバーグ・マルカートを参照してください。 |
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: trainingOptions("adam",Plots="training-progress") は、Adam ソルバーを使用して学習を行い、学習の進行状況をプロットに表示します。
監視
ニューラル ネットワークの学習中に表示するプロット。次のいずれかの値として指定します。
"none"— 学習中にプロットを表示しません。"training-progress"— 学習の進行状況をプロットします。
プロットの内容は、使用するソルバーによって異なります。
引数
solverNameが"sgdm"、"adam"、または"rmsprop"の場合、プロットには、ミニバッチ損失、検証損失、Metricsオプションで指定された学習ミニバッチと検証のメトリクス、および学習の進行状況に関する追加情報が表示されます。solverName引数が"lbfgs"または"lm"の場合、プロットには、学習と検証の損失、Metricsオプションで指定された学習と検証のメトリクス、および学習の進行状況に関する追加情報が表示されます。
学習後にプログラムで学習の進行状況プロットを開いたり閉じたりするには、関数 trainnet の 2 番目の出力で関数 show および close を使用します。Plots 学習オプションが "none" として指定されている場合でも、関数 show を使用して学習の進行状況を表示できます。
Y 軸のスケールを対数に切り替えるには、座標軸ツールバーを使用します。
プロットの詳細については、深層学習における学習の進行状況の監視を参照してください。
R2023b 以降
監視するメトリクス。次のうちの 1 つ以上として指定します。
組み込みメトリクス名またはオブジェクト。string スカラー、文字ベクトル、またはメトリクス オブジェクトとして指定します。
組み込み損失関数名。string スカラーまたは文字ベクトルとして指定します。
カスタム メトリクス。関数ハンドル、メトリクス オブジェクト、またはカスタム深層学習関数オブジェクトとして指定します。
複数のメトリクスを指定するには、string 配列または cell 配列を使用します。
深層学習のメトリクスと損失関数の詳細については、Deep Learning Metricsを参照してください。
組み込みメトリクス
組み込みメトリクスは、ほとんどのワークフローでうまく機能します。"accuracy" などの組み込みメトリクス名を指定できます。メトリクスをさらにカスタマイズしたい場合は、AccuracyMetric オブジェクトなどの対応するメトリクス オブジェクトを使用して、追加のオプションを指定できます。組み込みメトリクス オブジェクトを使用するときは、平均化のタイプ、タスクが単一ラベルか複数ラベルかなどの追加オプションを指定できます。
| メトリクス | string オプション | カスタマイズ対象オブジェクト |
|---|---|---|
| 精度 (最上位精度とも呼ばれる) | "accuracy" | AccuracyMetric |
| ROC 曲線下面積 (AUC) | "auc" | AUCMetric |
| F スコア (F1 スコアとも呼ばれる) | "fscore" | FScoreMetric |
| 適合率 | "precision" | PrecisionMetric |
| 再現率 | "recall" | RecallMetric |
| 平方根平均二乗誤差 | "rmse" | RMSEMetric |
平均絶対誤差率 (MAPE) (R2024b 以降) | "mape" | MAPEMetric |
R2 (決定係数) (R2025a 以降) | "rsquared" | RSquaredMetric |
損失関数
学習時に追加の損失値を監視する場合は、損失関数を指定します。
| メトリクス | string オプション | メモ |
|---|---|---|
分類タスク用のクロスエントロピー損失 (R2024b 以降) | "crossentropy" | 損失関数を |
分類タスクのインデックス クロスエントロピー損失 (R2024b 以降) | "indexcrossentropy" | 損失関数を |
バイナリ分類タスクおよびマルチラベル分類タスクのバイナリ クロスエントロピー損失 (R2024b 以降) | "binary-crossentropy" | |
回帰タスクの平均絶対誤差 (R2024b 以降) | "mae" / "mean-absolute-error" / "l1loss" | |
回帰タスクの平均二乗誤差 (R2024b 以降) | "mse" / "mean-squared-error" / "l2loss" | |
回帰タスクの Huber 損失 (R2024b 以降) | "huber" |
カスタム メトリクス
組み込みメトリクスと損失関数がタスクに必要な機能を提供しない場合は、関数ハンドル、メトリクス オブジェクト、またはカスタム深層学習関数オブジェクトとして独自のカスタム メトリクスを指定できます。
メトリクスを関数ハンドル、カスタム メトリクス オブジェクト、またはカスタム関数オブジェクトとして指定し、trainnet 関数を使用してニューラル ネットワークに学習させる場合、ソフトウェアによってメトリクスに渡されるターゲットのレイアウトは、ターゲットのデータ型によって異なります。trainnet 関数で指定する損失関数と、指定するその他のメトリクスは、ソフトウェアに次のような影響を及ぼします。
ターゲットが数値配列の場合、ソフトウェアはターゲットをメトリクスに直接渡します。
損失関数が
"index-crossentropy"で、ターゲットが categorical 配列の場合、ソフトウェアはターゲットを数値クラス インデックスに自動的に変換し、メトリクスに渡します。その他の損失関数では、ターゲットが categorical 配列の場合、ソフトウェアはターゲットを自動的に one-hot 符号化されたベクトルに変換し、メトリクスに渡します。
| オブジェクト | 説明 |
|---|---|
| カスタム関数 |
ミニバッチにデータが含まれる場合、ソフトウェアは各ミニバッチのメトリクスを計算し、それらの値の平均を返します。メトリクスによっては、この動作のために、データ セット全体を一度に使用してメトリクスを計算する場合とは異なるメトリクス値を取ることがあります。ほとんどの場合は、同様の値になります。データに対してバッチ平均されていないカスタム メトリクスを使用するには、カスタム メトリクス オブジェクトを作成しなければなりません。詳細については、Define Custom Deep Learning Metric Objectを参照してください。 詳細については、Define Custom Metric Functionを参照してください。 |
| カスタム メトリクス オブジェクト | 初期化、リセット、更新、集計、および評価を行うカスタム関数をもつメトリクス オブジェクト。カスタム メトリクスの作成方法を示す例については、Define Custom Metric Objectを参照してください。 カスタム メトリクスの作成に関する一般的な情報については、Define Custom Deep Learning Metric Objectを参照してください。 |
カスタム backward 関数をもつ深層学習関数オブジェクト (R2024a 以降) | カスタム backward 関数をもつ深層学習関数オブジェクト。カスタム深層学習関数オブジェクトを定義する方法を示す例については、Specify Custom Operation Backward Functionを参照してください。 categorical ターゲットの場合、ソフトウェアは categorical 値を one-hot 符号化されたベクトルに自動的に変換し、メトリクス関数に渡します。 詳細については、カスタム深層学習演算の定義を参照してください。 |
R2024a 以降
早期に停止して最適なネットワークを返すのに使用される目的指標の名前。string スカラーまたは文字ベクトルとして指定します。
このメトリクスの名前は、"loss" であるか、Metrics 引数で指定されたメトリクスの名前と同じでなければなりません。関数ハンドルで指定されたメトリクスはサポートされていません。ObjectiveMetricName の値をカスタム メトリクスの名前として指定するには、カスタム メトリクス オブジェクトの Maximize プロパティの値が空であってはなりません。詳細については、Define Custom Deep Learning Metric Objectを参照してください。
早期に停止するための目的指標の指定に関する詳細については、ValidationPatience を参照してください。目的指標を使用して最適なネットワークを返すことに関する詳細については、OutputNetwork を参照してください。
データ型: char | string
コマンド ウィンドウに学習の進行状況を表示するかどうかのフラグ。数値または logical の 1 (true) か 0 (false) として指定します。
詳細出力の内容は、ソルバーのタイプによって異なります。
確率的ソルバー (SGDM、Adam、および RMSProp) の場合、このテーブルには次の変数が含まれます。
| 変数 | 説明 |
|---|---|
Iteration | 反復回数。 |
Epoch | エポック数。 |
TimeElapsed | 経過時間。時間、分、秒で示されます。 |
LearnRate | 学習率。 |
TrainingLoss | 学習損失。 |
ValidationLoss | 検証損失。検証データを指定しない場合、ソフトウェアはこの情報を表示しません。 |
バッチ ソルバー (L-BFGS および LM) の場合、この table には次の変数が含まれます。
| 変数 | 説明 |
|---|---|
Iteration | 反復回数 |
TimeElapsed | 経過時間 (時間、分、秒) |
TrainingLoss | 学習損失 |
ValidationLoss | 検証損失。検証データを指定しない場合、ソフトウェアはこの情報を表示しません。 |
GradientNorm | 勾配のノルム |
StepNorm | ステップのノルム |
学習オプションで追加のメトリクスを指定した場合、詳細出力にもそれらのメトリクスが表示されます。たとえば、Metrics 学習オプションを "accuracy" に設定した場合、TrainingAccuracy 変数と ValidationAccuracy 変数もこの情報に含まれます。
学習が停止すると、詳細出力に停止の理由が表示されます。
コマンド ウィンドウに詳細出力を表示する間隔となる反復回数。正の整数として指定します。
学習中にニューラル ネットワークを検証する場合、ソフトウェアは、検証が行われるたびにコマンド ウィンドウにも出力します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
学習中に呼び出す関数。関数ハンドル、または関数ハンドルの cell 配列として指定します。ソフトウェアは、学習の開始前、各反復後、および学習の完了時に関数を 1 回呼び出します。
関数の構文は stopFlag = f(info) でなければなりません。ここで、info は学習の進行状況に関する情報が格納される構造体、stopFlag は学習を早期に停止させることを示すスカラーです。stopFlag が 1 (true) の場合、ソフトウェアは学習を停止させます。それ以外の場合、ソフトウェアは学習を続行します。
trainnet 関数は、構造体 info を出力関数に渡します。
確率的ソルバー (SGDM、Adam、および RMSProp) の場合、info には次のフィールドが含まれます。
| フィールド | 説明 |
|---|---|
Epoch | エポック数 |
Iteration | 反復回数 |
TimeElapsed | 学習開始からの時間 |
LearnRate | 反復での学習率 |
TrainingLoss | 反復での学習損失 |
ValidationLoss | 検証損失 (指定されており、反復時に評価される場合)。 |
State | 反復での学習状態。"start"、"iteration"、または "done" として指定します。 |
バッチ ソルバー (L-BFGS および LM) の場合、info には次のフィールドが含まれます。
| フィールド | 説明 |
|---|---|
Iteration | 反復回数 |
TimeElapsed | 経過時間 (時間、分、秒) |
TrainingLoss | 学習損失 |
ValidationLoss | 検証損失。検証データを指定しない場合、ソフトウェアはこの情報を表示しません。 |
GradientNorm | 勾配のノルム |
StepNorm | ステップのノルム |
State | 反復での学習状態。"start"、"iteration"、または "done" として指定します。 |
学習オプションで追加のメトリクスを指定した場合、学習情報にもそれらのメトリクスが表示されます。たとえば、Metrics 学習オプションを "accuracy" に設定した場合、フィールド TrainingAccuracy および ValidationAccuracy もこの情報に含まれます。
フィールドが計算されない、または出力関数の特定の呼び出しに関連していない場合、そのフィールドには空の配列が含まれます。
出力関数の使用方法を示す例については、深層学習における学習用のカスタム停止条件を参照してください。
データ型: function_handle | cell
データ レイアウト
R2025a 以降
categorical 入力の符号化。次のいずれかの値として指定します。
"integer"— categorical 入力を整数値に変換します。この場合、ネットワークは categorical 入力ごとに 1 つの入力チャネルをもたなければなりません。"one-hot"— categorical 入力を one-hot 符号化されたベクトルに変換します。この場合、ネットワークは categorical 入力ごとにnumCategories個のチャネルをもたなければなりません。ここで、numCategoriesは対応する categorical 入力のカテゴリの数です。
R2025a 以降
categorical ターゲットの符号化。次のいずれかの値として指定します。
"auto"—"index-crossentropy"損失関数を使用して学習させる場合は、categorical ターゲットを整数値に変換します。それ以外の場合は、categorical ターゲットを one-hot 符号化されたベクトルに変換します。"integer"— categorical ターゲットを整数値に変換し、整数に符号化された値を損失関数とメトリクス関数に渡します。"one-hot"— categorical ターゲットを one-hot 符号化されたベクトルに変換し、one-hot 符号化された値を損失関数とメトリクス関数に渡します。
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) に対応します。
詳細については、深層学習のデータ形式を参照してください。
データ型: char | string | cell
R2023b 以降
ターゲット データの次元の説明。次のいずれかの値として指定します。
"auto"— ターゲット データと入力データの次元の数が同じ場合、関数trainnetはInputDataFormatsで指定された形式を使用します。ターゲット データの次元数が入力データと異なる場合、trainnet関数は損失関数で必要とされる形式を使用します。string 配列、文字ベクトル、または文字ベクトルの cell 配列 — 関数
trainnetはユーザーが指定したデータ形式を使用します。
深層学習のデータ形式は文字列で、各文字は対応するデータ次元のタイプを表します。各文字は以下のとおりです。
"S"— 空間"C"— チャネル"B"— バッチ"T"— 時間"U"— 指定なし
たとえば、シーケンスのバッチを表し、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。データは "CBT" (チャネル、バッチ、時間) の形式で記述できます。
"S" または "U" のラベルが付いた次元については、複数回指定できます。"C"、"B"、"T" のラベルについては、それぞれ 1 回のみ使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。
詳細については、深層学習のデータ形式を参照してください。
データ型: char | string | cell
確率的ソルバーのオプション
学習に使用するエポックの最大数 (データを一巡する回数)。正の整数として指定します。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
各ミニバッチのサンプル数。正の整数として指定します。
学習関数はデータをミニバッチに分割し、それらをループ処理します。関数は、各ミニバッチの損失関数の勾配を使用して、ニューラル ネットワークの学習可能なパラメーターを更新します。
指定されたミニバッチ サイズよりも学習サンプルの数が少ない場合、ソフトウェアはすべての学習データを含む単一のミニバッチを使用します。そうでない場合、ミニバッチのサイズで学習観測値の数を割り切ることができなければ、ソフトウェアは最後の部分的なミニバッチを破棄します。エポックごとに同じデータが破棄されるのを回避するには、Shuffle 学習オプションを "every-epoch" に設定します。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
ヒント
最高のパフォーマンスを得るために、imageDatastore などの ReadSize プロパティをもつデータストアを使用してネットワークに学習させる場合は、ReadSize プロパティと MiniBatchSize 学習オプションを同じ値に設定します。augmentedImageDatastore などの MiniBatchSize プロパティをもつデータストアを使用してネットワークに学習させる場合は、データストアの MiniBatchSize プロパティと MiniBatchSize 学習オプションを同じ値に設定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
データのシャッフルのオプション。次のいずれかの値として指定します。
"once"— 学習データと検証データを学習前に 1 回シャッフルします。"never"— データをシャッフルしません。"every-epoch"— 各学習エポックの前に学習データをシャッフルし、ニューラル ネットワークの各検証の前に検証データをシャッフルします。
指定されたミニバッチ サイズよりも学習サンプルの数が少ない場合、ソフトウェアはすべての学習データを含む単一のミニバッチを使用します。そうでない場合、ミニバッチのサイズで学習観測値の数を割り切ることができなければ、ソフトウェアは最後の部分的なミニバッチを破棄します。エポックごとに同じデータが破棄されるのを回避するには、Shuffle 学習オプションを "every-epoch" に設定します。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
学習に使用される初期学習率。正のスカラーとして指定します。
学習率が小さすぎる場合、学習が収束するまでに多くの反復が必要になる場合があります。学習率が大きすぎる場合、学習が準最適の結果に収束したり、発散したりすることがあります。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
solverName が "sgdm" の場合、既定値は 0.01 です。solverName が "rmsprop" または "adam" の場合、既定値は 0.001 です。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
学習率スケジュール。組み込みの学習率スケジュール名の文字ベクトルまたは string スカラー、名前の string 配列、組み込みまたはカスタムの学習率スケジュール オブジェクト、または関数ハンドルとして指定するか、名前、メトリクス オブジェクト、および関数ハンドルから成る cell 配列として指定します。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
string または cell 配列を指定することで、複数の学習率スケジュールを組み合わせることができます (R2024b 以降)。この場合、ソフトウェアは最初の要素から順番にスケジュールを適用します。スケジュールのうち最大 1 つを無限にすることができます ("cyclical" スケジュールや、NumSteps プロパティを Inf に設定したオブジェクトなど、無期限に継続するスケジュール)。無限スケジュールは、配列の最後の要素でなければなりません。
組み込みの学習率スケジュール
学習率スケジュールを、string スカラー、文字ベクトル、または次の 1 つ以上の名前から成る string または cell 配列として指定します。
| スケジュール | string | オブジェクト | プロット |
|---|---|---|---|
| 学習率スケジュールなし | "none" — 学習率を一定に保持します。 | NA |
|
| 区分的学習率スケジュール | "piecewise" — 10 エポックごとに学習率を 10 分の 1 に下げます。 |
R2024b より前: |
|
| ウォームアップ学習率スケジュール (R2024b 以降) | "warmup" — 5 回の反復で学習率を基本学習率まで徐々に上げます。 | warmupLearnRate — ウォームアップ スケジュールの初期学習率係数、最終学習率係数、およびステップ数をカスタマイズします。 |
|
| 多項式学習率スケジュール (R2024b 以降) | "polynomial" — エポックごとに単位指数のべき乗則を使用して学習率を下げます。 | polynomialLearnRate — 多項式スケジュールの初期学習率係数、最終学習率係数、指数、およびステップ数をカスタマイズします。 |
|
| 指数学習率スケジュール (R2024b 以降) | "exponential" — エポックごとに学習率を 10 分の 1 に減衰させます。 | exponentialLearnRate — 指数スケジュールのドロップ係数と周期をカスタマイズします。 |
|
| 余弦学習率スケジュール (R2024b 以降) | "cosine" — エポックごとに、余弦定理を使用して学習率を下げます。 | cosineLearnRate — 余弦スケジュールの初期学習率係数、最終学習率係数、周期、および周期成長係数をカスタマイズします。 |
|
| 周期的学習率スケジュール (R2024b 以降) | "cyclical" — 10 エポックの周期において、基本学習率から 5 エポックの間は学習率を増加させ、その後 5 エポックの間は学習率を減少させます。 | cyclicalLearnRate — 周期的なスケジュールの最大係数、周期、およびステップ比率をカスタマイズします。 |
|
カスタム学習率スケジュール (R2024b 以降)
柔軟性をさらに高めるには、deep.LearnRateSchedule から継承する関数ハンドルまたはカスタム クラスとしてカスタム学習率スケジュールを定義できます。
| スケジュール | 説明 |
|---|---|
| カスタム学習率スケジュール関数 | 関数ハンドルは、構文 learningRate = f(baseLearningRate,epoch) で表されます。ここで、baseLearningRate は基本学習率、epoch はエポック数です。 |
| カスタム学習率スケジュール オブジェクト |
詳細については、Define Custom Learning Rate Scheduleを参照してください。 |
モーメンタム項付き確率的勾配降下法における前の反復から現在の反復へのパラメーター更新ステップの寄与。0 から 1 までのスカラーとして指定します。
値 0 は前のステップからの寄与がないことを意味し、値 1 は前のステップからの寄与が最大であることを意味します。ほとんどのタスクにおいて、既定値で良い結果が得られます。
この引数は、SGDM ソルバーのみをサポートします (引数 solverName が "sgdm" の場合)。
詳細については、モーメンタム項付き確率的勾配降下法を参照してください。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Adam ソルバーの勾配の移動平均の減衰率。1 未満の非負のスカラーとして指定します。勾配の減衰率は、適応モーメント推定の節で β1 で表されます。
この引数は、Adam ソルバーのみをサポートします (引数 solverName が "adam" の場合)。
詳細については、適応モーメント推定を参照してください。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Adam ソルバーおよび RMSProp ソルバーの勾配の二乗の移動平均の減衰率。1 未満の非負のスカラーとして指定します。勾配の二乗の減衰率は、[4]で β2 として表されます。
減衰率の一般的な値は 0.9、0.99、および 0.999 であり、平均化の長さとしては 10 回、100 回、および 1000 回のパラメーター更新にそれぞれ対応しています。
このオプションは、Adam ソルバーおよび RMSProp ソルバーのみをサポートします (引数 solverName が "adam" または "rmsprop" の場合)。
Adam ソルバーの既定値は 0.999 です。RMSProp ソルバーの既定値は 0.9 です。
詳細については、適応モーメント推定および平方根平均二乗伝播を参照してください。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Adam および RMSProp ソルバーの分母のオフセット。正のスカラーとして指定します。
ソルバーは、ニューラル ネットワーク パラメーターの更新時に分母にオフセットを追加して、ゼロ除算を回避します。ほとんどのタスクにおいて、既定値で良い結果が得られます。
このオプションは、Adam ソルバーおよび RMSProp ソルバーのみをサポートします (引数 solverName が "adam" または "rmsprop" の場合)。
詳細については、適応モーメント推定および平方根平均二乗伝播を参照してください。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
学習率を下げる係数。0 から 1 までのスカラーとして指定します。この引数は、LearnRateSchedule 引数が "piecewise" である場合にのみ有効です。
LearnRateDropFactor は、特定のエポック数が経過するたびに学習率に適用される乗法係数です。LearnRateDropPeriod 引数を使用してエポック数を指定します。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
ヒント
区分的学習率スケジュールをカスタマイズするには、piecewiseLearnRate オブジェクトを使用します (R2024b 以降)。ドロップ頻度をさらに制御できるため、LearnRateDropFactor および LearnRateDropPeriod の学習オプションよりも、piecewiseLearnRate オブジェクトの使用が推奨されます。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
学習率を下げるまでのエポック数。正の整数として指定します。この引数は、LearnRateSchedule 値が "piecewise" である場合にのみ有効です。
指定したエポック数が経過するたびに、グローバル学習率と低下係数が乗算されます。LearnRateDropFactor 引数を使用して低下係数を指定します。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
ヒント
区分的学習率スケジュールをカスタマイズするには、piecewiseLearnRate オブジェクトを使用します (R2024b 以降)。ドロップ頻度をさらに制御できるため、LearnRateDropFactor および LearnRateDropPeriod の学習オプションよりも、piecewiseLearnRate オブジェクトの使用が推奨されます。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
バッチ ソルバーのオプション
R2023b 以降
学習に使用する最大反復回数。正の整数として指定します。
L-BFGS ソルバーは全バッチ ソルバーです。これは、学習セット全体を 1 回の反復で処理することを意味します。
このオプションはバッチ ソルバーのみをサポートします (solverName 引数が "lbfgs" または "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2023b 以降
相対勾配の許容値。正のスカラーとして指定します。
相対勾配の許容誤差。次のいずれかの値として指定します。
正のスカラー — 相対勾配が指定した値以下になると、学習を停止します。
0(R2025a 以降) — 相対勾配に基づいて学習を停止しません。
このオプションはバッチ ソルバーのみをサポートします (solverName 引数が "lbfgs" または "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2023b 以降
ステップ サイズの許容誤差。次のいずれかの値として指定します。
正のスカラー — アルゴリズムの実行するステップが指定された値以下になると、学習を停止します。
0(R2025a 以降) — ステップ サイズに基づいて学習を停止しません。
このオプションはバッチ ソルバーのみをサポートします (solverName 引数が "lbfgs" または "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2023b 以降
適切な学習率を検出する方法。次の値のいずれかとして指定します。
"weak-wolfe"— 弱 Wolfe 条件を満たす学習率を検索します。この方法は、逆ヘッセ行列の正定値近似を維持します。"strong-wolfe"— 強 Wolfe 条件を満たす学習率を検索します。この方法は、逆ヘッセ行列の正定値近似を維持します。"backtracking"— 十分な減少条件を満たす学習率を検索します。この方法は、逆ヘッセ行列の正定値近似を維持しません。
このオプションは、L-BFGS ソルバーのみをサポートします (引数 solverName が "lbfgs" の場合)。
R2023b 以降
保存する状態更新の数。正の整数として指定します。ほとんどのタスクには 3 ~ 20 の値が適しています。
L-BFGS アルゴリズムは、勾配計算の履歴を使用してヘッセ行列を再帰的に近似します。詳細については、メモリ制限 BFGSを参照してください。
このオプションは、L-BFGS ソルバーのみをサポートします (引数 solverName が "lbfgs" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2023b 以降
逆ヘッセ行列の近似を特徴付ける初期値。正のスカラーとして指定します。
メモリを節約するため、L-BFGS アルゴリズムでは密なヘッセ行列 B の保存や反転は行われません。代わりに、アルゴリズムは近似 を使用します。ここで、m は履歴サイズであり、逆ヘッセ因子 はスカラーです。また、I は単位行列です。このアルゴリズムは、スカラーの逆ヘッセ因子のみを格納します。アルゴリズムは各ステップで逆ヘッセ因子を更新します。
逆ヘッセ因子の初期値は、 の値です。
詳細については、メモリ制限 BFGSを参照してください。
このオプションは、L-BFGS ソルバーのみをサポートします (引数 solverName が "lbfgs" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2023b 以降
学習率を決定するための直線探索の反復の最大数。正の整数として指定します。
このオプションは、L-BFGS ソルバーのみをサポートします (引数 solverName が "lbfgs" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2024b 以降
初期ステップ サイズ。次のいずれかの値として指定します。
[]— 初期ヘッセ近似の決定に初期ステップ サイズを使用しません。"auto"— 初期ステップ サイズを自動的に決定します。ソフトウェアは、初期ステップ サイズ を使用します。ここで、W0 はネットワークの初期の学習可能なパラメーターです。正の実数スカラー — 指定された値を初期ステップ サイズ として使用します。
InitialStepSize が "auto" または正の実数スカラーの場合、ソフトウェアは を使用して初期逆ヘッセ行列を近似します。ここで、λ0 は初期逆ヘッセ行列係数であり、 は初期の学習可能なパラメーターに関する損失の勾配を示します。詳細については、メモリ制限 BFGSを参照してください。
このオプションは、L-BFGS ソルバーのみをサポートします (引数 solverName が "lbfgs" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string
R2024b 以降
初期減衰係数。正のスカラーとして指定します。
このオプションは、LM ソルバーのみをサポートします (solverName 引数が "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2024b 以降
最大減衰係数。正のスカラーとして指定します。
このオプションは、LM ソルバーのみをサポートします (solverName 引数が "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2024b 以降
減衰係数を増加させる係数。1 より大きい正のスカラーとして指定します。
このオプションは、LM ソルバーのみをサポートします (solverName 引数が "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
R2024b 以降
減衰係数を減少させる係数。1 未満の正のスカラーとして指定します。
このオプションは、LM ソルバーのみをサポートします (solverName 引数が "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
検証
学習中の検証に使用するデータ。
検証予測子と検証ターゲットを、学習関数がサポートする形式で指定します。学習関数が、学習予測子と学習ターゲットを単一のオブジェクトとして指定することをサポートしている場合 (たとえば、trainnet 関数は、データを単一のデータストアとして指定することをサポートしている)、検証データも同様の方法で指定できます。検証予測子と検証ターゲットが別々のインメモリ配列に格納されている場合、cell 配列 {predictors,targets} を指定できます。ここで、predictors と targets は、それぞれ学習関数がサポートするレイアウトの検証予測子と検証ターゲットです。詳細については、学習関数の入力引数を参照してください。
学習中に、ソフトウェアは検証データを使用して検証損失とメトリクス値を計算します。検証頻度を指定するには、ValidationFrequency 学習オプションを使用します。検証データを使用して、検証目的指標が改善されなくなったときに学習を自動的に停止することもできます。既定では、目的指標は損失に設定されます。自動検証停止をオンにするには、ValidationPatience 学習オプションを使用します。
ValidationData が [] の場合、学習中にニューラル ネットワークが検証されません。
ニューラル ネットワークに予測時と学習時で動作が異なる層 (ドロップアウト層など) がある場合、検証損失が学習損失より低くなる可能性があります。
検証データは、Shuffle 学習オプションに従ってシャッフルされます。Shuffle が "every-epoch" の場合、検証データはニューラル ネットワークの各検証の前にシャッフルされます。
反復回数で示されるニューラル ネットワークの検証の頻度。正の整数として指定します。
ValidationFrequency の値は、検証メトリクスの評価間の反復回数です。検証データを指定するには、ValidationData 学習オプションを使用します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
ニューラル ネットワークの学習の検証を停止するまでの待機回数。正の整数または Inf として指定します。
ValidationPatience は、ニューラル ネットワークの学習が停止するまでに、検証セットでの目的指標が前の最良値以下になることが許容される回数を指定します。ValidationPatience が Inf の場合、検証メトリクスの値によって学習が早期に停止することはありません。ソフトウェアは、メトリクスの 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引数で指定します。検証ステップが実行される前に学習が停止した場合 (たとえば、学習の進行状況プロットの [停止] ボタンをクリックした場合)、学習関数は検証ステップを実行せず、最後の学習反復に対応するニューラル ネットワークを返します。"last-iteration"– 最後の学習反復に対応するニューラル ネットワークを返します。
正規化と正則化
R2026a 以降
ターゲットを正規化するフラグ。次のいずれかの値として指定します。
数値または logical の
1(true) — ターゲットを正規化します。学習させるニューラル ネットワークにはinverseNormalizationLayerオブジェクトがなければなりません。ソフトウェアは、逆正規化層のNormalizationプロパティで指定された正規化方式を使用します。数値または logical の
0(false) — ターゲットを正規化しません。
バッチ正規化層の統計量を評価するモード。次のいずれかとして指定します。
"population"— 母集団の統計量を使用します。学習終了後に学習データが再度渡され、その結果得られる平均と分散を使用して最終的な統計量が決定されます。"moving"— 学習中、以下の更新ステップで与えられる実行時推定を使用して統計量を近似します。ここで、 と はそれぞれ更新後の平均と分散、 と はそれぞれ平均と分散の減衰値、 と はそれぞれ層入力の平均と分散、 と はそれぞれ移動平均と分散の値の最新値を表します。学習終了後、最後に得られた移動平均と分散の値が使用されます。このオプションは、CPU および単一の GPU による学習のみをサポートします。
"auto"—"moving"オプションを使用します。
入力層の正規化統計量をリセットするフラグ。次のいずれかの値として指定します。
数値または logical の
1(true) — 入力層の正規化統計量をリセットし、学習時に再計算します。数値または logical の
0(false) — 入力層のプロパティで指定された正規化統計量を学習時に使用します。層のプロパティが[]である場合、ソフトウェアは対応する統計量の既定値で統計量を初期化します。
R2026a 以降
逆正規化層の統計量をリセットするフラグ。次のいずれかの値として指定します。
数値または logical の
1(true) — 逆正規化層の統計量をリセットし、学習時に再計算します。数値または logical の
0(false) — 逆正規化層の統計量が空である場合、それを学習時に計算します。
L2 正則化 (重み減衰) の係数。非負のスカラーとして指定します。詳細については、L2 正則化を参照してください。
このオプションは、LM ソルバーをサポートしません (solverName 引数が "lm" の場合)。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
勾配クリップ
勾配しきい値。Inf または正のスカラーとして指定します。勾配が GradientThreshold の値を超えた場合、勾配は GradientThresholdMethod 引数に応じてクリップされます。
詳細については、勾配クリップを参照してください。
このオプションは、LM ソルバーをサポートしません (solverName 引数が "lm" の場合)。
データ型: 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に等しくなるように偏微分をスケーリングします。
詳細については、勾配クリップを参照してください。
このオプションは、LM ソルバーをサポートしません (solverName 引数が "lm" の場合)。
シーケンス
入力シーケンスのパディングまたは切り捨てを行うオプション。次のいずれかの値として指定します。
"longest"— 各ミニバッチで、最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが、パディングによってニューラル ネットワークにノイズが生じることがあります。"shortest"— 各ミニバッチで、最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用するとパディングは追加されませんが、データが破棄されます。
シーケンスのパディングと切り捨ての効果の詳細については、シーケンスのパディングと切り捨てを参照してください。
パディングまたは切り捨ての方向。次のいずれかのオプションとして指定します。
"right"— シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイム ステップで始まり、ソフトウェアによって各シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。"left"— シーケンスの左側に対してパディングまたは切り捨てを行います。各シーケンスが同じタイム ステップで終わるように、ソフトウェアによって各シーケンスの先頭に対して切り捨てまたはパディングの追加が行われます。
再帰層は 1 タイム ステップずつシーケンス データを処理するため、再帰層が最後のタイム ステップのみを出力する場合、最後のタイム ステップでパディングを行うと層の出力に悪影響を与える可能性があります。左側のパディングを使用すると、最後のタイム ステップにパディングが含まれないようになるため、この問題を回避できます。
sequence-to-sequence ニューラル ネットワークの場合 (再帰層がシーケンス全体を出力する場合)、最初のタイム ステップでパディングを行うと、それ以前のタイム ステップの予測に悪影響を与える可能性があります。右側のパディングを使用すると、最初のタイム ステップにパディングが含まれないようになるため、この問題を回避できます。
シーケンスのパディングと切り捨ての効果の詳細については、シーケンスのパディングと切り捨てを参照してください。
入力シーケンスをパディングするための値。スカラーとして指定します。
ニューラル ネットワーク全体にエラーが伝播される可能性があるため、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 を利用できない場合、エラーが返されます。
さまざまな実行環境をどのような場合に使用するかの詳細は、並列処理、GPU、およびクラウドによる深層学習のスケール アップを参照してください。
並列学習の実行時に性能の改善を確認するには、MiniBatchSize および InitialLearnRate 学習オプションを GPU の数でスケール アップしてみてください。
"multi-gpu"、"parallel-auto"、"parallel-cpu"、および "parallel-gpu" オプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
R2024a 以降
学習時にデータストアからデータを取得して前処理を行うための環境。次のいずれかの値として指定します。
"serial"– データの取得と前処理は逐次実行されます。"background"– バックグラウンド プールを使用してデータの取得と前処理が行われます。"parallel"– 並列ワーカーを使用してデータの取得と前処理が行われます。ローカル プールが開かれていなければ、ソフトウェアは既定のプロファイルを使用して並列プールを開きます。ローカルではない並列プールはサポートされません。このオプションを使用するには、Parallel Computing Toolbox が必要です。並列で学習させる場合 (ExecutionEnvironmentオプションが"parallel-auto"、"parallel-cpu"、"parallel-gpu"、または"multi-gpu"の場合)、このオプションはサポートされません。
Shuffle オプションが "never" の場合、"background" オプションおよび "parallel" オプションはサポートされません。
"background" オプションおよび "parallel" オプションを使用した場合、deep.gpu.deterministicAlgorithms 関数を使用しても学習は非確定的になります。
ミニバッチに大幅な前処理が必要な場合は、"background" オプションを使用します。前処理がスレッドでサポートされていない場合、またはワーカー数を制御する必要がある場合は、"parallel" オプションを使用します。前処理環境の詳細については、Preprocess Data in the Background or in Parallelを参照してください。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
R2024a より前: データを並列で前処理するには、DispatchInBackground 学習オプションを logical の 1 (true) に設定します。
R2026b 以降
GPU 学習の浮動小数点精度。以下のいずれかの値として指定します。
"prioritize-single"— 既定の MATLAB® 浮動小数点データ型伝播ルールを使用して学習計算が行われます。学習可能なパラメーターと状態パラメーター、および学習データがすべて double 型でない限り、単精度浮動小数点演算を使用して学習計算が行われます。MATLAB の浮動小数点データ型の詳細については、浮動小数点数を参照してください。"automatic-mixed"— 可能な限り最高のパフォーマンスを得るために半精度浮動小数点演算を使用して学習計算が行われます。ソフトウェアは、パフォーマンスを向上させ、数値安定性を維持するために、単精度と半精度を各演算において自動的に選択します。このオプションは、Compute Capability が 8.0 以上の GPU (Ampere アーキテクチャ以降) での学習のみをサポートします。
自動混合精度を使用すると、GPU メモリの使用量も削減できるため、ミニバッチ サイズを大きくすることができます。ミニバッチ サイズを大きくすると、通常は学習時間が短縮されます。しかし、ミニバッチのサイズが大きすぎると、学習済みネットワークの最終的な精度に悪影響を与える可能性があります。
大規模なネットワークであるほど、自動混合精度を使用することによるパフォーマンス上のメリットは大きくなります。ネットワークに複数のカスタム層が含まれている場合は、"prioritize-single" を使用してください。自動混合精度を使用すると、学習が遅くなる可能性があります。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
メモ
自動混合精度を使用する場合、trainnet 関数は単精度の学習可能なパラメーターと状態パラメーターをもつネットワークを返すため、このオプションは、予測、Simulink® へのエクスポート、またはコード生成には影響しません。
R2024a 以降
パフォーマンスの最適化。次のいずれかの値として指定します。
"auto"– 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。"none"– すべての最適化を無効にします。
"auto" 高速化オプションを使用すると、パフォーマンス上のメリットが得られますが、初期実行時間が長くなります。互換性のあるパラメーターを使用した後続の呼び出しは、より高速になります。サイズと形状が同じである異なる入力データを使用して関数を複数回呼び出す場合は、パフォーマンスの最適化を使用してください。
チェックポイント
チェックポイント ニューラル ネットワークの保存用のパス。string スカラーまたは文字ベクトルとして指定します。
パスを指定しない (既定の
""を使用する) 場合、チェックポイント ニューラル ネットワークは保存されません。パスを指定すると、ソフトウェアによってこのパスにチェックポイント ニューラル ネットワークが保存され、各ニューラル ネットワークに一意の名前が割り当てられます。その後、いずれかのチェックポイント ニューラル ネットワークを読み込み、そのニューラル ネットワークから学習を再開できます。
フォルダーが存在していない場合、チェックポイント ニューラル ネットワークを保存するパスを指定する前に、まずフォルダーを作成しなければなりません。指定したパスが存在していない場合、ソフトウェアはエラーをスローします。
データ型: char | string
チェックポイント ニューラル ネットワークを保存する頻度。正の整数として指定します。
solverName が "lbfgs" であるか CheckpointFrequencyUnit が "iteration" である場合、CheckpointFrequency 回の反復ごとにチェックポイント ニューラル ネットワークが保存されます。それ以外の場合、ソフトウェアは CheckpointFrequency エポックごとにチェックポイント ニューラル ネットワークを保存します。
solverName が "sgdm"、"adam"、または "rmsprop" の場合、既定値は 1 です。solverName が "lbfgs" または "lm" の場合、既定値は 30 です。
このオプションは、CheckpointPath が空でない場合にのみ有効です。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
チェックポイントの頻度の単位。"epoch" または "iteration" として指定します。
CheckpointFrequencyUnit が "epoch" の場合、ソフトウェアは CheckpointFrequency エポックごとにチェックポイント ニューラル ネットワークを保存します。
CheckpointFrequencyUnit が "iteration" の場合、ソフトウェアは CheckpointFrequency 回の反復ごとにチェックポイント ニューラル ネットワークを保存します。
このオプションは、CheckpointPath が空でない場合にのみ有効です。
このオプションは、確率的ソルバーのみをサポートします (引数 solverName が "sgdm"、"adam"、または "rmsprop" の場合)。
出力引数
学習オプション。TrainingOptionsSGDM オブジェクト、TrainingOptionsRMSProp オブジェクト、TrainingOptionsADAM オブジェクト、TrainingOptionsLBFGS オブジェクト、TrainingOptionsLM オブジェクトとして返されます。
ニューラル ネットワークに学習させるには、学習オプションを関数 trainnet への入力引数として使用します。
ヒント
ほとんどの深層学習タスクでは、事前学習済みのニューラル ネットワークを使用して独自のデータに適応させることができます。転移学習を使用して、畳み込みニューラル ネットワークの再学習を行い、新しい一連のイメージを分類する方法を示す例については、新しいイメージを分類するためのニューラル ネットワークの再学習を参照してください。または、関数
trainnetと関数trainingOptionsを使用してニューラル ネットワークを作成し、これにゼロから学習させることができます。タスクに必要な学習オプションが関数
trainingOptionsに用意されていない場合、自動微分を使用してカスタム学習ループを作成できます。詳細については、カスタム学習ループを使用したネットワークの学習を参照してください。タスクに必要な損失関数が関数
trainnetに用意されていない場合、カスタム損失関数を関数ハンドルとしてtrainnetに指定できます。損失関数が予測とターゲットよりも多くの入力を必要とする場合 (たとえば、損失関数がニューラル ネットワークまたは追加の入力にアクセスする必要がある場合)、カスタム学習ループを使用してモデルに学習させます。詳細については、カスタム学習ループを使用したネットワークの学習を参照してください。タスクに必要な層が Deep Learning Toolbox™ に用意されていない場合、カスタム層を作成できます。詳細については、カスタム深層学習層の定義を参照してください。層のネットワークとして指定できないモデルの場合は、モデルを関数として定義できます。詳細については、モデル関数を使用したネットワークの学習を参照してください。
どのタスクでどの学習手法を使用するかについての詳細は、MATLAB による深層学習モデルの学習を参照してください。
アルゴリズム
畳み込み層と全結合層の場合、重みとバイアスの初期化はそれぞれ層のWeightsInitializer プロパティと BiasInitializer プロパティによって与えられます。重みとバイアスの初期化を変更する方法を示す例については、畳み込み層の初期の重みとバイアスの指定および全結合層の初期の重みとバイアスの指定を参照してください。
標準の勾配降下法アルゴリズムは、各反復で損失の負の勾配の方向に小さいステップで進むことによって損失関数を最小化するように、ネットワーク パラメーター (重みとバイアス) を更新します。
ここで、 は反復回数、 は学習率、 はパラメーター ベクトル、 は損失関数を意味します。標準の勾配降下法アルゴリズムでは、損失関数の勾配 は、学習セット全体を使用して評価されます。標準の勾配降下法アルゴリズムでは、データ セット全体を一度に使用します。
一方、"確率的" 勾配降下法アルゴリズムは、各反復で学習データのサブセットを使用して勾配を評価し、パラメーターを更新します。各反復ではミニバッチと呼ばれる別のサブセットが使用されます。ミニバッチを使用して、学習セット全体に対する学習アルゴリズムを一巡することを、1 "エポック" と言います。確率的勾配降下が確率的と言われるのは、ミニバッチを使用して計算されたパラメーター更新が、データセット全体を使用して得られるパラメーター更新のノイズを含む推定であるためです。
確率的勾配降下法アルゴリズムは、最適値への最急降下経路に沿って振動することがあります。パラメーター更新へのモーメンタム項の追加は、この振動を減らす方法の 1 つです[2]。モーメンタム項付き確率的勾配降下法 (SGDM) の更新は、以下のとおりです。
ここで、学習率 α とモーメンタム項の値 は、前の勾配ステップから現在の反復への寄与を決定します。
モーメンタム項付き確率的勾配降下法は、すべてのパラメーターに対して 1 つの学習率を使用します。その他の最適化アルゴリズムでは、パラメーターごとに異なり、最適化対象の損失関数に自動的に適応できる学習率を使用して、ネットワーク学習の改善を試みます。平方根平均二乗伝播 (RMSProp) はそのようなアルゴリズムの 1 つです。これは、パラメーターの勾配について要素単位の二乗の移動平均を維持します。
ここで、β2 は、移動平均の二乗勾配減衰係数です。減衰率の一般的な値は、0.9、0.99、および 0.999 です。対応する勾配の二乗の平均化長は、1/(1-β2) に等しく、それぞれ 10、100、および 1000 回のパラメーター更新です。RMSProp アルゴリズムでは、この移動平均を使用して各パラメーターの更新を個別に正規化します。
ここで、除算は要素単位で実行されます。RMSProp を使用すると、勾配が大きいパラメーターの学習率は効果的に減少し、勾配が小さいパラメーターの学習率は増加します。ɛ は、ゼロ除算を回避するために追加する小さい定数です。
適応モーメント推定 (Adam) [4]では、RMSProp に似ているが、モーメンタム項が追加されたパラメーター更新を使用します。これは、パラメーターの勾配とそれらの二乗値の両方について要素単位の移動平均を維持します。
ここで、θℓ は反復 ℓ における学習可能パラメーター、∇E(θℓ) は θℓ に関する損失関数 E の勾配、β1 は勾配減衰係数、β2 は二乗勾配減衰係数です。Adam では移動平均を使用してネットワーク パラメーターを次のように更新します。
ここで、α は学習率、ε は数値安定性のための微小定数です。多数の反復に対する勾配が類似している場合、勾配の移動平均を使用すると、パラメーター更新で特定方向のモーメンタム項を選択できます。勾配のほとんどがノイズである場合、勾配の移動平均が小さくなり、パラメーター更新も小さくなります。Adam の完全な更新には、学習の最初に現れるバイアスを補正するメカニズムも含まれています。詳細については、[4]を参照してください。
L-BFGS アルゴリズム[5]は、Broyden-Fletcher-Goldfarb-Shanno (BFGS) アルゴリズムを近似する準ニュートン法です。L-BFGS アルゴリズムは、単一のバッチで処理できる小規模なネットワークやデータ セットに使用します。
このアルゴリズムは、次で指定される更新ステップを使用し、反復 k+1 で学習可能なパラメーター W を更新します。
ここで、Wk は反復 k における重みを表し、 は反復 k における学習率です。Bk は反復 k におけるヘッセ行列の近似であり、 は反復 k における学習可能なパラメーターに関する損失の勾配を表します。
L-BFGS アルゴリズムは、行列とベクトルの積 を直接計算します。このアルゴリズムでは、Bk の逆行列を計算する必要がありません。
メモリを節約するため、L-BFGS アルゴリズムでは密なヘッセ行列 B の保存や反転は行われません。代わりに、アルゴリズムは近似 を使用します。ここで、m は履歴サイズであり、逆ヘッセ因子 はスカラーです。また、I は単位行列です。このアルゴリズムは、スカラーの逆ヘッセ因子のみを格納します。アルゴリズムは各ステップで逆ヘッセ因子を更新します。
行列とベクトルの積 を直接計算するために、L-BFGS アルゴリズムは次の再帰的アルゴリズムを使用します。
を設定します。ここで、m は履歴サイズです。
について、以下のようにします。
とします。ここで、 および は、それぞれ反復 に対するステップおよび勾配の差分です。
を設定します。ここで、 は、、、および損失関数に対する損失の勾配から導出されます。詳細については、[5]を参照してください。
を返します。
LM アルゴリズム[6]は、勾配降下法とガウス・ニュートン法を補完するもので、小規模なニューラル ネットワークにとって、よりロバストなアルゴリズムとなり得ます。LM アルゴリズムは、ヤコビ外積を使用して 2 階微分を近似します。LM アルゴリズムは、学習可能なパラメーターの数が少なく、データ セットを 1 つのバッチで処理できる回帰ネットワークに使用します。
アルゴリズムは、次で与えられる更新ステップを使用し、反復 k+1 で学習可能なパラメーター W を更新します。
ここで、ΔWk は、次で与えられる反復 k での重みの変化です。
ここで、Hk は反復 k での近似ヘッセ行列であり、 は、学習可能なパラメーターに関する反復 k での損失の勾配です。このアルゴリズムは、次を使用してヘッセ行列を近似します。
ここで、Jk は反復 k でのヤコビ行列、μk は反復 k での減衰係数、I は単位行列です。
ソルバーは、各反復で実行されるステップ サイズを調整するために減衰係数を使用し、各反復で適応的に更新します。ソルバーは、反復によって損失が増加すると減衰係数を増加させ、損失が減少すると減衰係数を減少させます。これらの調整により、オプティマイザーは、損失が増加しているときにはより大きなステップを、損失が減少しているときにはより小さなステップをそれぞれ実行するようになります。
ソルバーは、損失が増加した場合には DampingIncreaseFactor を、損失が減少した場合には DampingDecreaseFactor をそれぞれ乗算して、減衰係数を適応的に増減します。
勾配の大きさが指数関数的に増加する場合、学習は不安定になり、数回の反復で発散する場合があります。この "勾配爆発" は、学習損失が NaN または Inf になることによって示されます。勾配クリップは、学習率が大きい場合や外れ値が存在する場合に学習を安定させることによって、勾配爆発を防ぎます[3]。勾配クリップを使用すると、ネットワークの学習が高速になり、通常は学習済みタスクの精度に影響はありません。
勾配クリップは 2 種類あります。
ノルムベースの勾配クリップでは、しきい値に基づいて勾配を再スケーリングし、勾配の方向は変更しません。
GradientThresholdMethodの"l2norm"値と"global-l2norm"値は、ノルムベースの勾配クリップ法です。値ベースの勾配クリップでは、しきい値より大きい任意の偏微分をクリップします。この場合、勾配の方向が任意に変化する可能性があります。値ベースの勾配クリップの動作は予測できないものになる場合がありますが、変化が十分に小さければ、ネットワークが発散することはありません。
GradientThresholdMethodの値"absolute-value"は、値ベースの勾配クリップ法です。
損失関数 への重みの正則化項の追加は、過適合を抑える方法の 1 つです[1]、[2]。正則化項は、"重み減衰" とも呼ばれます。正則化項付きの損失関数は、以下の形式を取ります。
ここで、 は重みベクトル、 は正則化係数です。正則化関数 は以下のようになります。
バイアスは正則化されないことに注意してください[2]。L2Regularization 学習オプションを使用して、正則化係数 を指定できます。setL2Factor 関数を使用して、個々の層と学習可能なパラメーターの正則化係数を指定することもできます。
ネットワーク学習に使用される損失関数には、正則化項が含まれます。ただし、学習中にコマンド ウィンドウと学習の進行状況プロットに表示される損失値はデータのみの損失であり、正則化項は含まれません。
参照
[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.
[4] Kingma, Diederik, and Jimmy Ba. "Adam: A method for stochastic optimization." arXiv preprint arXiv:1412.6980 (2014).
[5] Liu, Dong C., and Jorge Nocedal. "On the limited memory BFGS method for large scale optimization." Mathematical programming 45, no. 1 (August 1989): 503-528. https://doi.org/10.1007/BF01589116.
[6] Marquardt, Donald W. “An Algorithm for Least-Squares Estimation of Nonlinear Parameters.” Journal of the Society for Industrial and Applied Mathematics 11, no. 2 (June 1963): 431–41. https://doi.org/10.1137/0111030.
バージョン履歴
R2016a で導入自動混合精度を使用して、GPU 上でのニューラル ネットワークの学習を高速化します。TrainingPrecision 学習オプションを "automatic-mixed" に設定すると、最高のパフォーマンスを得るために、半精度浮動小数点演算を使用して学習が行われます。
正規化されたターゲットを使用すると、回帰ニューラル ネットワークの学習が安定するようになります。回帰ターゲットを自動的に正規化するには、NormalizeTargets 引数を 1 (true) に設定し、ニューラル ネットワークに inverseNormalizationLayer を含めます。逆正規化層を作成するときに、ターゲット正規化オプションを指定します。
ニューラル ネットワークに学習させるために categorical 入力と categorical ターゲットを数値に変換する方法を指定するには、それぞれ CategoricalInputEncoding 引数と CategoricalTargetEncoding 引数を使用します。
L-BFGS または LM ソルバーを使用するときに、相対勾配またはステップ サイズの値によって学習が停止しないようにするには、trainingOptions 関数の GradientTolerance 引数と StepTolerance 引数をそれぞれ 0 に設定します。
学習時に R2 メトリクスを監視してプロットします。
このメトリクスを使用して学習時の動作を監視およびプロットするには、Metrics を使用して指定します。"rsquared" を指定することも、より高度なカスタマイズが必要な場合には RSquaredMetric オブジェクトを作成することもできます。
以下の学習率スケジュールを trainingOptions 関数の LearnRateSchedule 引数として指定して、ニューラル ネットワークに学習させます。
"warmup"— ウォームアップ学習率スケジュール"polynomial"— 多項式学習率スケジュール"exponential"— 指数学習率スケジュール"cosine"— 余弦学習率スケジュール"cyclical"— 周期的学習率スケジュール
これらの学習率スケジュールをカスタマイズするには、以下のオブジェクトを使用します。
warmupLearnRate— ウォームアップ学習率スケジュール オブジェクトpolynomialLearnRate— 多項式学習率スケジュールexponentialLearnRate— 指数学習率スケジュールcosineLearnRate— 余弦学習率スケジュールcyclicalLearnRate— 周期的学習率スケジュール
以前のバージョンでは、区分的学習率スケジュールを使用するか、学習率スケジュールなしで学習させることができました。
既存の区分的学習率スケジュールをカスタマイズするには、piecewiseLearnRate オブジェクトを使用します。
カスタム スケジュールを指定するには、構文 learnRate = f(initialLearnRate,epoch) で関数ハンドルを使用するか、deep.LearnRateSchedule から継承するクラスを定義して独自のカスタム学習率スケジュール オブジェクトを定義します。
レーベンバーグ・マルカート (LM) ソルバーを使用してニューラル ネットワークに学習させます。LM アルゴリズムは、学習可能なパラメーターの数が少なく、データ セットを 1 つのバッチで処理できる回帰ネットワークに使用します。
trainnet 関数で LM ソルバーを使用するには、solverName 引数を "lm" として指定して TrainingOptionsLM オブジェクトを作成します。次の新しい学習オプションを使用して、LM ソルバーをカスタマイズできます。
InitialDampingFactor— 初期減衰係数MaxDampingFactor— 最大減衰係数DampingDecreaseFactor— 減衰減少係数DampingIncreaseFactor— 減衰増加係数
学習時およびテスト時に、新しいメトリクス オブジェクトや更新されたメトリクス オブジェクトを使用します。
MAPEMetric— 平均絶対誤差率 (MAPE)新しい
NumTopKClassesオプション付きのAccuracyMetric— 上位 k 位の精度新しい
Betaオプション付きのFScoreMetric— Fβ スコア
以下の新しい組み込みのメトリクスと損失名を直接指定することもできます。
"mape"— 平均絶対誤差率 (MAPE)"crossentropy"— クロスエントロピー損失"index-crossentropy"— インデックス クロスエントロピー損失"binary-crossentropy"— バイナリ クロスエントロピー損失"mse"/"mean-squared-error"/"l2loss"— 平均二乗誤差"mae"/"mean-absolute-error"/"l1loss"— 平均絶対誤差"huber"— Huber 損失
InitialStepSize 引数を使用して、L-BFGS ソルバーの初期ステップ サイズを指定します。
引数 ValidationData を使用して、検証データを minibatchqueue オブジェクトとして指定します。
パフォーマンスの自動最適化によって、学習が高速化されます。関数 trainnet を使用してネットワークに学習させる場合、パフォーマンスの自動最適化は既定で有効になります。関数 trainingOptions を使用して Acceleration オプションを "none" に設定することで、パフォーマンスの最適化を無効にできます。
メトリクスを deep.DifferentiableFunction オブジェクトとして指定します。
SequenceLength を整数に設定することは推奨されません。代わりに、SequenceLength を "longest" または "shortest" に設定してください。
trainNetwork のワークフロー (非推奨) では、SequenceLength を整数に設定できます。SequenceLength が整数の場合、ソフトウェアは、各ミニバッチについて、そのミニバッチ内で最も長いシーケンスに合わせてシーケンスをパディングした後、指定した長さのより小さいシーケンスに分割します。分割が発生した場合、ソフトウェアは、追加のミニバッチを作成し、それらのミニバッチ間のネットワーク再帰状態を更新します。指定したシーケンス長によってデータのシーケンスを均等に分割できない場合、最後のシーケンスを含むミニバッチの長さは指定した長さより短くなります。
DispatchInBackground 学習オプションは推奨されません。代わりに PreprocessingEnvironment オプションを使用してください。
PreprocessingEnvironment オプションは同じ機能を提供します。また、このオプションを使用すると、PreprocessingEnvironment を "background" に設定したときに、前処理で backgroundPool を使用することができます。
コードを更新する方法を次の表に示します。
| 非推奨 | 推奨 |
|---|---|
trainingOptions(solverName,DispatchInBackground=false) (既定) | trainingOptions(solverName,PreprocessingEnvironment="serial") (既定) |
trainingOptions(solverName,DispatchInBackground=true) | trainingOptions(solverName,PreprocessingEnvironment="parallel") |
DispatchInBackground オプションを削除する予定はありません。
R2024a 以降、OutputNetwork 学習オプションの既定値は "auto" になります。検証データを指定した場合、ソフトウェアは最良の検証メトリクス値に対応するネットワークを返します。検証データを指定しなかった場合、ソフトウェアは最後の学習反復に対応するネットワークを返します。検証データがあるときに以前の既定値を再現するには、OutputNetwork を "last-iteration" に設定します。
この変更は、学習オプションを trainnet と共に使用している場合にのみ適用されます。学習オプションを関数 trainNetwork と共に使用している場合、動作に変更はなく、ソフトウェアは既定で最後の学習反復に対応するネットワークを返します。
OutputNetwork を "best-validation-loss" として指定することは推奨されません。コードで OutputNetwork が "best-validation-loss" に設定されている場合、代わりに "best-validation" を使用してください。ソフトウェアは、ObjectiveMetricName オプションで指定された最良の検証メトリクス値に対応するネットワークを返します。既定では、ObjectiveMetricName の値は "loss" に設定されています。この動作は、学習オプションを関数 trainnet と共に使用した場合にのみ適用されます。
学習オプションを関数 trainNetwork と共に使用し、OutputNetwork を "best-validation" として指定した場合、ソフトウェアは、検証損失値が最良であるネットワークを常に返します。
R2024a 以降、ExecutionEnvironment オプションを "parallel" として指定することは推奨されません。代わりに "parallel-auto" を使用してください。
"parallel-auto" は、"parallel" と比べて次の利点があります。
ソフトウェアは、利用可能なあらゆるハードウェアを使用して自動的に並列学習を行うため、このオプションの名前は実行環境をより正確に表しています。
このオプションの名前は、逐次版の
"auto"と整合性があります。
"parallel" オプションを削除する予定はありません。"parallel-auto" は関数 trainnet のみをサポートします。学習オプションを関数 trainNetwork と共に使用している場合は、引き続き "parallel" を使用してください。
R2024a 以降、WorkerLoad 学習オプションの指定は推奨されません。代わりに、spmd (Parallel Computing Toolbox) または環境変数 CUDA_VISIBLE_DEVICES を使用してください。
関数 trainNetwork を使用する学習ネットワークの WorkerLoad のサポートを削除する予定はありません。WorkerLoad は、関数 trainnet を使用する学習ネットワークではサポートされません。
WorkerLoad の代表的な使用法と、代わりに spmd または環境変数 CUDA_VISIBLE_DEVICES を使用するためのコードの更新方法を、次の表に示します。
| 非推奨 | 推奨 |
|---|---|
options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu", ... WorkerLoad=[1 1 0 1]); | % Alternative 1 pool = parpool(3); spmd if spmdIndex == 3 gpuDevice(spmdIndex + 1); else gpuDevice(spmdIndex); end end options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu"); % Alternative 2 % Set this environment variable immediately after your start MATLAB. setenv("CUDA_VISIBLE_DEVICES","0,1,3"); options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu"); |
options = trainingOptions(solver, ... ExecutionEnvironment="parallel", ... WorkerLoad=[1 1 0 1]); | pool = parpool(3); spmd if spmdIndex == 3 gpuDevice(spmdIndex + 1); else gpuDevice(spmdIndex); end end options = trainingOptions(solver, ... ExecutionEnvironment="parallel-auto"); |
これまで WorkerLoad オプションを使用してデータ前処理用のワーカーを予約していた場合は、PreprocessingEnvironment オプションを "background" として指定して、データをバックグラウンドで前処理することも検討してください。
L-BFGS ソルバーを使用してニューラル ネットワークに学習させるには、solverName を "lbfgs" として指定します。L-BFGS アルゴリズムは、単一のバッチで処理できる小規模なネットワークやデータ セットに使用します。L-BFGS ソルバーをカスタマイズするには、バッチ ソルバーのオプションプロパティを使用します。
このオプションは関数 trainnet のみをサポートします。
入力とターゲットのデータ形式は、それぞれ InputDataFormats オプションおよび TargetDataFormats オプションを使用して指定します。
このオプションは関数 trainnet のみをサポートします。
ExecutionEnvironment を "parallel-cpu" または "parallel-gpu" として指定することで、特定のハードウェア リソースを使用してニューラル ネットワークの並列学習を行います。
このオプションは関数 trainnet のみをサポートします。
R2023b 以降、BatchNormalizationStatistics 学習オプションの既定値は "auto" になります。
この変更は関数の動作には影響しません。BatchNormalizationStatistics プロパティをチェックするコードがある場合は、"auto" オプションに対応するようにコードを更新します。
R2022b 以降、関数 trainNetwork を使用してシーケンス データでニューラル ネットワークに学習させるときに、SequenceLength オプションが整数である場合、各ミニバッチ内で最も長いシーケンスに合わせてシーケンスがパディングされた後、指定したシーケンス長でシーケンスが分割されてミニバッチが作成されます。SequenceLength によってミニバッチのシーケンスを均等に分割できない場合、最後に分割されたミニバッチの長さは SequenceLength より短くなります。この動作によって、パディング値しか含まれないタイム ステップでニューラル ネットワークの学習が行われるのを防ぐことができます。
以前のリリースでは、SequenceLength の倍数に最も近く、かつミニバッチ長以上の長さとなるように、シーケンスのミニバッチをパディングしてから、データが分割されていました。この動作を再現するには、カスタム学習ループを使用し、データのミニバッチを前処理するタイミングでこの動作を実装します。
R2018b 以降では、ValidationPatience 学習オプションの既定値が Inf になっています。これは、検証による自動停止がオフであることを意味します。これにより、データから十分に学習する前に学習が停止するのを防ぎます。
以前のバージョンの既定値は 5 です。この動作を再現するには、ValidationPatience オプションを 5 に設定します。
R2018b 以降では、チェックポイント ネットワークを保存すると、net_checkpoint_ で始まるファイル名が割り当てられます。以前のバージョンでは、convnet_checkpoint_ で始まるファイル名が割り当てられます。
チェックポイント ネットワークの保存と読み込みを行うコードがある場合、コードを更新して新しい名前でファイルを読み込みます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)






