TrainingOptionsRMSProp
RMSProp オプティマイザーの学習オプション
説明
TrainingOptionsRMSProp
オブジェクトを使用して、学習率の情報、L2 正則化係数、ミニバッチのサイズなどの、RMSProp (平方根平均二乗伝播) オプティマイザーの学習オプションを設定します。
作成
trainingOptions
を使用し、最初の入力引数として "rmsprop"
を指定し、TrainingOptionsRMSProp
オブジェクトを作成します。
プロパティ
RMSProp
学習に使用するエポックの最大数 (データを一巡する回数)。正の整数として指定します。
データ型: 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
学習率スケジュール。組み込みの学習率スケジュール名の文字ベクトルまたは string スカラー、名前の string 配列、組み込みまたはカスタムの学習率スケジュール オブジェクト、または関数ハンドルとして指定するか、名前、メトリクス オブジェクト、および関数ハンドルから成る cell 配列として指定します。
組み込みの学習率スケジュール名
学習率スケジュールを、string スカラー、文字ベクトル、または次の 1 つ以上の名前から成る string または cell 配列として指定します。
名前 | 説明 | プロット |
---|---|---|
"none" | 学習率スケジュールなし。このスケジュールでは、学習率が一定に保持されます。 | |
"piecewise" | 区分的学習率スケジュール。このスケジュールでは、10 エポックごとに学習率を 10 分の 1 に下げます。 | |
"warmup" (R2024b 以降) | ウォームアップ学習率スケジュール。このスケジュールでは、5 回の反復で学習率を基本学習率まで上げます。 | |
"polynomial" (R2024b 以降) | 多項式学習率スケジュール。このスケジュールでは、エポックごとに単位指数のべき乗則を使用して学習率を下げます。 | |
"exponential" (R2024b 以降) | 指数学習率スケジュール。このスケジュールでは、エポックごとに学習率を 10 分の 1 に減衰させます。 | |
"cosine" (R2024b 以降) | 余弦学習率スケジュール。このスケジュールでは、エポックごとに余弦定理を使用して学習率を下げます。 | |
"cyclical" (R2024b 以降) | 周期的学習率スケジュール。このスケジュールでは、10 エポックの周期において、基本学習率から 5 エポックの間は学習率を増加させ、その後 5 エポックの間は学習率を減少させます。 | |
組み込みの学習率スケジュール オブジェクト (R2024b 以降)
string オプションを超える柔軟性が必要な場合は、組み込みの学習率スケジュール オブジェクトを使用できます。
piecewiseLearnRate
— 区分的学習率スケジュール オブジェクトは、指定された係数を乗算して学習率を定期的に下げます。このオブジェクトを使用して、区分的スケジュールのドロップ係数と期間をカスタマイズします。R2024b より前:
LearnRateDropFactor
学習オプションとLearnRateDropPeriod
学習オプションをそれぞれ使用して、区分的ドロップ係数と周期をカスタマイズします。warmupLearnRate
— ウォームアップ学習率スケジュール オブジェクトは、指定された反復回数だけ学習を強化します。このオブジェクトを使用して、初期学習率係数、最終学習率係数、およびウォームアップ スケジュールのステップ数をカスタマイズします。polynomialLearnRate
— 多項式学習率スケジュールでは、べき乗則を使用して学習率を下げます。このオブジェクトを使用して、初期学習率係数、最終学習率係数、指数、および多項式スケジュールのステップ数をカスタマイズします。exponentialLearnRate
— 指数学習率スケジュールでは、指定した係数で学習率を減衰させます。このオブジェクトを使用して、指数スケジュールのドロップ係数と周期をカスタマイズします。cosineLearnRate
— 余弦学習率スケジュール オブジェクトは、余弦曲線を使用して学習率を下げ、ウォーム リスタートを組み込みます。このオブジェクトを使用して、コサイン スケジュールの初期学習率係数、最終学習率係数、周期、および周期成長係数をカスタマイズします。cyclicalLearnRate
— 周期的学習率スケジュールでは、学習率を周期的に増減させます。このオプションを使用して、周期的なスケジュールの最大係数、周期、およびステップ比率をカスタマイズします。
カスタム学習率スケジュール (R2024b 以降)
柔軟性をさらに高めるには、deep.LearnRateSchedule
から継承する関数ハンドルまたはカスタム クラスとしてカスタム学習率スケジュールを定義できます。
カスタム学習率スケジュール関数ハンドル — 必要な学習率スケジュールが組み込み学習率スケジュールではない場合、関数ハンドルを使用してカスタム学習率スケジュールを指定できます。カスタム スケジュールを指定するには、構文
learningRate = f(baseLearningRate,epoch)
で関数ハンドルを使用します。ここで、baseLearningRate
は基本学習率、epoch
はエポック数です。カスタム学習率スケジュール オブジェクト — 関数ハンドルを超える柔軟性が必要な場合は、
deep.LearnRateSchedule
から継承するカスタム学習率スケジュール クラスを定義できます。
複数の学習率スケジュール (R2024b 以降)
複数のスケジュールを string または cell 配列として指定することで、複数の学習率スケジュールを組み合わせることができます。次いでソフトウェアは、最初の要素から順番にスケジュールを適用します。スケジュールのうち最大 1 つを無限にすることができます ("cyclical"
スケジュールや、NumSteps
プロパティを Inf
に設定したオブジェクトなど、無期限に継続するスケジュール)。無限スケジュールは、配列の最後の要素でなければなりません。
学習率を下げるまでのエポック数。正の整数として指定します。このオプションは、LearnRateSchedule
学習オプションが "piecewise"
の場合にのみ有効です。
指定したエポック数が経過するたびに、グローバル学習率と低下係数が乗算されます。LearnRateDropFactor
学習オプションを使用して低下係数を指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
学習率を下げる係数。0
から 1
までのスカラーとして指定します。このオプションは、LearnRateSchedule
学習オプションが "piecewise"
の場合にのみ有効です。
LearnRateDropFactor
は、特定のエポック数が経過するたびに学習率に適用される乗法係数です。LearnRateDropPeriod
学習オプションを使用してエポック数を指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
RMSProp ソルバーの勾配の二乗の移動平均の減衰率。1
未満の非負のスカラーとして指定します。
減衰率の一般的な値は 0.9
、0.99
、および 0.999
であり、平均化の長さとしては 10
回、100
回、および 1000
回のパラメーター更新にそれぞれ対応しています。
詳細については、平方根平均二乗伝播を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
RMSProp ソルバーの分母のオフセット。正のスカラーとして指定します。
ソルバーは、ニューラル ネットワーク パラメーターの更新時に分母にオフセットを追加して、ゼロ除算を回避します。ほとんどのタスクにおいて、既定値で良い結果が得られます。
さまざまなソルバーの詳細については、平方根平均二乗伝播を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
データ レイアウト
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
監視
ニューラル ネットワークの学習中に表示するプロット。次のいずれかの値として指定します。
"none"
— 学習中にプロットを表示しません。"training-progress"
— 学習の進行状況をプロットします。
プロットには、ミニバッチ損失、検証損失、Metrics
プロパティで指定された学習ミニバッチと検証のメトリクス、および学習の進行状況に関する追加情報が表示されます。
学習後にプログラムで学習の進行状況プロットを開いたり閉じたりするには、関数 trainnet
の 2 番目の出力で関数 show
および close
を使用します。Plots
学習オプションが "none"
として指定されている場合でも、関数 show
を使用して学習の進行状況を表示できます。
Y 軸のスケールを対数に切り替えるには、座標軸ツール バーを使用します。
プロットの詳細については、深層学習における学習の進行状況の監視を参照してください。
R2023b 以降
監視するメトリクス。次のいずれかの値として指定します。
組み込みメトリクスまたは損失関数名 — string スカラー、文字ベクトル、または次の 1 つ以上の名前の cell 配列か string 配列としてメトリクスを指定します。
メトリクス:
"accuracy"
— 精度 (最上位精度とも呼ばれる)"auc"
— ROC 曲線下面積 (AUC)"fscore"
— F スコア (F1 スコアとも呼ばれる)"precision"
— 適合率"recall"
— 再現率"rmse"
— 平方根平均二乗誤差"mape"
— 平均絶対誤差率 (MAPE) (R2024b 以降)"rsquared"
— R2 (決定係数) (R2025a 以降)
損失関数:
"crossentropy"
— 分類タスクのクロスエントロピー損失。 (R2024b 以降)"indexcrossentropy"
— 分類タスクのインデックス クロスエントロピー損失。 (R2024b 以降)"binary-crossentropy"
— バイナリおよびマルチラベル分類タスクのバイナリ クロスエントロピー損失。 (R2024b 以降)"mae"
/"mean-absolute-error"
/"l1loss"
— 回帰タスクの平均絶対誤差。 (R2024b 以降)"mse"
/"mean-squared-error"
/"l2loss"
— 回帰タスクの平均二乗誤差。 (R2024b 以降)"huber"
— 回帰タスクの Huber 損失 (R2024b 以降)
損失関数を
"crossentropy"
に設定し、メトリクスとして"index-crossentropy"
を指定すること、または損失関数を"index-crossentropy"
に設定し、メトリクスとして"crossentropy"
を指定することはサポートされていないことに注意してください。深層学習のメトリクスと損失関数の詳細については、Deep Learning Metricsを参照してください。
組み込みメトリクス オブジェクト — より高い柔軟性が必要な場合は、組み込みメトリクス オブジェクトを使用できます。ソフトウェアは、次の組み込みメトリクス オブジェクトをサポートします。
MAPEMetric
(R2024b 以降)RSquaredMetric
(R2025a 以降)
組み込みメトリクス オブジェクトを作成するときは、平均化のタイプ、タスクが単一ラベルか複数ラベルかなどの追加オプションを指定できます。
カスタム メトリクス関数ハンドル — 組み込みメトリクス以外のメトリクスが必要な場合は、関数ハンドルを使用してカスタム メトリクスを指定できます。関数の構文は
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 以降) — カスタム逆方向関数をもつ関数オブジェクト。categorical ターゲットの場合、ソフトウェアは categorical 値を one-hot 符号化されたベクトルに自動的に変換し、メトリクス関数に渡します。詳細については、Define Custom Deep Learning Operationsを参照してください。カスタム メトリクス オブジェクト — より詳細なカスタマイズが必要な場合は、独自のカスタム メトリクス オブジェクトを定義できます。カスタム メトリクスの作成方法を示す例については、Define Custom Metric Objectを参照してください。カスタム メトリクスの作成に関する一般的な情報については、Define Custom Deep Learning Metric Objectを参照してください。
メトリクスを関数ハンドル、deep.DifferentiableFunction
オブジェクト、またはカスタム メトリクス オブジェクトとして指定し、trainnet
関数を使用してニューラル ネットワークに学習させる場合、ソフトウェアによってメトリクスに渡されるターゲットのレイアウトは、ターゲットのデータ型、trainnet
関数で指定する損失関数、および指定するその他のメトリクスによって異なります。
ターゲットが数値配列の場合、ソフトウェアはターゲットをメトリクスに直接渡します。
損失関数が
"index-crossentropy"
で、ターゲットが categorical 配列の場合、ソフトウェアはターゲットを数値クラス インデックスに自動的に変換し、メトリクスに渡します。その他の損失関数では、ターゲットが categorical 配列の場合、ソフトウェアはターゲットを自動的に one-hot 符号化されたベクトルに変換し、メトリクスに渡します。
このオプションは、関数 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
学習中に呼び出す出力関数。関数ハンドル、または関数ハンドルの cell 配列として指定します。ソフトウェアは、学習の開始前、各反復後、および学習の完了時に関数を 1 回呼び出します。
関数の構文は stopFlag = f(info)
でなければなりません。ここで、info
は学習の進行状況に関する情報が格納される構造体、stopFlag
は学習を早期に停止させることを示すスカラーです。stopFlag
が 1
(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
検証
学習中の検証で使用するデータ。[]
として指定するか、検証予測子と検証ターゲットを含むデータストア、table、cell 配列、または minibatchqueue
オブジェクトとして指定します。
学習中に、ソフトウェアは検証データを使用して検証損失とメトリクス値を計算します。検証頻度を指定するには、ValidationFrequency
学習オプションを使用します。検証データを使用して、検証オブジェクティブ メトリクスが改善されなくなったときに学習を自動的に停止することもできます。既定では、オブジェクティブ メトリクスは損失に設定されます。自動検証停止をオンにするには、ValidationPatience
学習オプションを使用します。
ValidationData
が []
の場合、学習中にニューラル ネットワークが検証されません。
ニューラル ネットワークに予測時と学習時で動作が異なる層 (ドロップアウト層など) がある場合、検証損失が学習損失より低くなる可能性があります。
検証データは、Shuffle
学習オプションに従ってシャッフルされます。Shuffle
が "every-epoch"
の場合、検証データはニューラル ネットワークの各検証の前にシャッフルされます。
サポートされている形式は、使用する学習関数によって異なります。
関数 trainnet
データストア、table、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
は、ニューラル ネットワークの学習が停止するまでに、検証セットでのオブジェクティブ メトリクスが前の最良値以下になることが許容される回数を指定します。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
オプションで指定します。このオプションを使用するには、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"
— 学習中、以下の更新ステップで与えられる実行時推定を使用して統計量を近似します。ここで、 と はそれぞれ更新後の平均と分散、 と はそれぞれ平均と分散の減衰値、 と はそれぞれ層入力の平均と分散、 と はそれぞれ移動平均と分散の値の最新値を表します。学習終了後、最後に得られた移動平均と分散の値が使用されます。このオプションは、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"
オプションを使用した場合、deep.gpu.deterministicAlgorithms
関数を使用しても学習は非確定的になります。
ミニバッチに大幅な前処理が必要な場合は、"background"
オプションを使用します。前処理がスレッドでサポートされていない場合、またはワーカー数を制御する必要がある場合は、"parallel"
オプションを使用します。前処理環境の詳細については、Preprocess Data in the Background or in Parallelを参照してください。
R2024a より前: データを並列で前処理するには、DispatchInBackground
学習オプションを 1 (true)
に設定します。
R2024a 以降
パフォーマンスの最適化。次のいずれかの値として指定します。
"auto"
– 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。"none"
– すべての最適化を無効にします。
"auto"
高速化オプションを使用すると、パフォーマンス上のメリットが得られますが、初期実行時間が長くなります。互換性のあるパラメーターを使用した後続の呼び出しは、より高速になります。サイズと形状が同じである異なる入力データを使用して関数を複数回呼び出す場合は、パフォーマンスの最適化を使用してください。
チェックポイント
チェックポイント ニューラル ネットワークの保存用のパス。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
が空でない場合にのみ有効です。
例
RMSProp オプティマイザーを使用したニューラル ネットワーク学習の一連のオプションを作成します。学習のエポックの最大回数を 20 に設定し、反復ごとに 64 個の観測値があるミニバッチを使用します。学習率と、勾配の二乗の移動平均の減衰率を指定します。学習の進行状況プロットをオンにします。
options = trainingOptions("rmsprop", ... InitialLearnRate=3e-4, ... SquaredGradientDecayFactor=0.99, ... MaxEpochs=20, ... MiniBatchSize=64, ... Plots="training-progress")
options = TrainingOptionsRMSProp with properties: MaxEpochs: 20 InitialLearnRate: 3.0000e-04 LearnRateSchedule: 'none' LearnRateDropFactor: 0.1000 LearnRateDropPeriod: 10 MiniBatchSize: 64 Shuffle: 'once' CheckpointFrequencyUnit: 'epoch' PreprocessingEnvironment: 'serial' Verbose: 1 VerboseFrequency: 50 ValidationData: [] ValidationFrequency: 50 ValidationPatience: Inf Metrics: [] ObjectiveMetricName: 'loss' ExecutionEnvironment: 'auto' Plots: 'training-progress' OutputFcn: [] SequenceLength: 'longest' SequencePaddingValue: 0 SequencePaddingDirection: 'right' InputDataFormats: "auto" TargetDataFormats: "auto" ResetInputNormalization: 1 BatchNormalizationStatistics: 'auto' OutputNetwork: 'auto' Acceleration: "auto" CheckpointPath: '' CheckpointFrequency: 1 CategoricalInputEncoding: 'integer' CategoricalTargetEncoding: 'auto' L2Regularization: 1.0000e-04 GradientThresholdMethod: 'l2norm' GradientThreshold: Inf SquaredGradientDecayFactor: 0.9900 Epsilon: 1.0000e-08
アルゴリズム
モーメンタム項付き確率的勾配降下法は、すべてのパラメーターに対して 1 つの学習率を使用します。その他の最適化アルゴリズムでは、パラメーターごとに異なり、最適化対象の損失関数に自動的に適応できる学習率を使用して、ネットワーク学習の改善を試みます。平方根平均二乗伝播 (RMSProp) はそのようなアルゴリズムの 1 つです。これは、パラメーターの勾配について要素単位の二乗の移動平均を維持します。
β2 は、移動平均の二乗勾配減衰係数です。減衰率の一般的な値は、0.9、0.99、および 0.999 です。対応する勾配の二乗の平均化長は、1/(1-β2) に等しく、それぞれ 10、100、および 1000 回のパラメーター更新です。RMSProp アルゴリズムでは、この移動平均を使用して各パラメーターの更新を個別に正規化します。
ここで、除算は要素単位で実行されます。RMSProp を使用すると、勾配が大きいパラメーターの学習率は効果的に減少し、勾配が小さいパラメーターの学習率は増加します。ɛ は、ゼロ除算を回避するために追加する小さい定数です。
損失関数 への重みの正則化項の追加は、過適合を抑える方法の 1 つです[1]、[2]。正則化項は、"重み減衰" とも呼ばれます。正則化項付きの損失関数は、以下の形式を取ります。
ここで、 は重みベクトル、 は正則化係数です。正則化関数 は以下のようになります。
バイアスは正則化されないことに注意してください[2]。L2Regularization
学習オプションを使用して、正則化係数 を指定できます。setL2Factor
関数を使用して、個々の層と学習可能なパラメーターの正則化係数を指定することもできます。
ネットワーク学習に使用される損失関数には、正則化項が含まれます。ただし、学習中にコマンド ウィンドウと学習の進行状況プロットに表示される損失値はデータのみの損失であり、正則化項は含まれません。
勾配の大きさが指数関数的に増加する場合、学習は不安定になり、数回の反復で発散する場合があります。この "勾配爆発" は、学習損失が NaN
または Inf
になることによって示されます。勾配クリップは、学習率が大きい場合や外れ値が存在する場合に学習を安定させることによって、勾配爆発を防ぎます[3]。勾配クリップを使用すると、ネットワークの学習が高速になり、通常は学習済みタスクの精度に影響はありません。
勾配クリップは 2 種類あります。
ノルムベースの勾配クリップでは、しきい値に基づいて勾配を再スケーリングし、勾配の方向は変更しません。
GradientThresholdMethod
の"l2norm"
値と"global-l2norm"
値は、ノルムベースの勾配クリップ法です。値ベースの勾配クリップでは、しきい値より大きい任意の偏微分をクリップします。この場合、勾配の方向が任意に変化する可能性があります。値ベースの勾配クリップの動作は予測できないものになる場合がありますが、変化が十分に小さければ、ネットワークが発散することはありません。
GradientThresholdMethod
の値"absolute-value"
は、値ベースの勾配クリップ法です。
参照
[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.
バージョン履歴
R2018a で導入ニューラル ネットワークに学習させるために categorical 入力と categorical ターゲットを数値に変換する方法を指定するには、それぞれ CategoricalInputEncoding
引数と CategoricalTargetEncoding
引数を使用します。
以下の学習率スケジュールを trainingOptions
関数の LearnRateSchedule
引数として指定して、ニューラル ネットワークに学習させます。
"warmup"
— ウォームアップ学習率スケジュール"polynomial"
— 多項式学習率スケジュール"exponential"
— 指数学習率スケジュール"cosine"
— 余弦学習率スケジュール"cyclical"
— 周期的学習率スケジュール
これらの学習率スケジュールをカスタマイズするには、以下のオブジェクトを使用します。
warmupLearnRate
— ウォームアップ学習率スケジュール オブジェクトpolynomialLearnRate
— 多項式学習率スケジュールexponentialLearnRate
— 指数学習率スケジュールcosineLearnRate
— 余弦学習率スケジュールcyclicalLearnRate
— 周期的学習率スケジュール
以前のバージョンでは、区分的学習率スケジュールを使用するか、学習率スケジュールなしで学習させることができました。
既存の区分的学習率スケジュールをカスタマイズするには、piecewiseLearnRate
オブジェクトを使用します。
カスタム スケジュールを指定するには、構文 learnRate = f(initialLearnRate,epoch)
で関数ハンドルを使用するか、deep.LearnRateSchedule
から継承するクラスを定義して独自のカスタム学習率スケジュール オブジェクトを定義します。
学習時およびテスト時に、新しいメトリクス オブジェクトや更新されたメトリクス オブジェクトを使用します。
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 損失
引数 ValidationData
を使用して、検証データを minibatchqueue
オブジェクトとして指定します。
パフォーマンスの自動最適化によって、学習が高速化されます。関数 trainnet
を使用してネットワークに学習させる場合、パフォーマンスの自動最適化は既定で有効になります。関数 trainingOptions
を使用して Acceleration
オプションを "none"
に設定することで、パフォーマンスの最適化を無効にできます。
メトリクスを deep.DifferentiableFunction
オブジェクトとして指定します。
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"
として指定して、データをバックグラウンドで前処理することも検討してください。
入力とターゲットのデータ形式は、それぞれ 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
に設定します。
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)