TrainingProgressMeasurements
NetTrainのオプションで,訓練の進行中に使用する測度を指定する.
詳細
- TrainingProgressMeasurements->spec では,spec に次の形式を使うことができる.
-
"measurement" 名前付きの組込み測度 NetPort["output"] ネットの出力ポートの値 NetPort["tdata"] ネットの訓練データの値 NetPort[{lspec,"output"}] ネットの内部活性化の値 NetPort[{lspec,"weight"}] 重み付き配列の値 NetPort["input","TrainingData"] ネットにフィードされた,あるいは生成器関数によって生成された任意のデータの値 <"Measurement"spec,… > サブオプションのある測度 <"Measurement"Function[…],… > 測定するカスタム関数 - TrainingProgressMeasurements{spec1,spec2,…}と設定すると,複数の測度が作られる.
- デフォルト設定の TrainingProgressMeasurementsAutomaticでは,単一のCrossEntropyLossLayerを使って訓練されているネットに"ErrorRate"測度が自動的に含まれる.
- CrossEntropyLossLayerを含むネットには,次の組込み測度が使用できる.
-
"Accuracy" 正しく分類された例の割合 "Accuracy"n 正しい例がトップ n に入る例の割合 "AreaUnderROCCurve" 各クラスについてのROC曲線の下の面積 "CohenKappa" コーエン(Cohen)のカッパ係数 "ConfusionMatrix" クラス j として分類されたクラス i の例の数 cij "ConfusionMatrixPlot" 混同行列プロット "Entropy" natで計測したエントロピー "ErrorRate" 間違って分類された例の割合 "ErrorRate"n 間違った結果がトップ n に含まれる例の割合 "F1Score" 各クラスのF1スコア "FScore"β 各クラスのFβスコア "FalseDiscoveryRate" 各クラス偽発見率 "FalseNegativeNumber" 偽陰性例の数 "FalseNegativeRate" 各クラスの偽陰性率 "FalseOmissionRate" 各クラスの偽省略率 "FalsePositiveNumber" 偽陽性例の数 "FalsePositiveRate" 各クラスの偽陽性率 "Informedness" 各クラスの情報量 "Markedness" 各クラスの有標性 "MatthewsCorrelationCoefficient" 各クラスのマシュー相関係数 "NegativePredictiveValue" 各クラスの偽予測率 "Perplexity" エントロピーの指数 "Precision" 各クラスの精度 "Recall" 各クラスの再現率 "ROCCurve" 各クラスの受信者動作特性(ROC)曲線 "ROCCurvePlot" 受信者動作特性曲線のプロット "ScottPi" スコット(Scott)のパイ係数 "Specificity" 各クラスの特殊性 "TrueNegativeNumber" 真陰性例の数 "TruePositiveNumber" 真陽性例の数 - MeanSquaredLossLayerあるいはMeanAbsoluteLossLayerを含むネットについては,次の組込み測度が使える.
-
"FractionVarianceUnexplained" ネットによって説明されずに残された出力分散の割合 "IntersectionOverUnion" 境界ボックスの和集合の交点 "MeanDeviation" 残差の平均絶対値 "MeanSquare" 残差の二乗平均平方 "RSquared" 決定係数 "StandardDeviation" 残差の二乗平均平方根 - カスタム関数測定のための純関数は,TrainingProgressFunctionで説明されている連想で与えられる.
- <"Measurement"measurement,opt1val1,… >の形式の連想を使って,指定された測度にサブオプションが指定できる.
- 測度のソースが曖昧な場合は,サブオプション"Source""outname"を使って,そこから測度値を取るネットの特定の出力ポートを選ぶことができる.
- "Precision","Recall","F1Score","ROCCurve"のようにクラスごとに計算される測度については,サブオプション"ClassAveraging"type が指定できる.次は,使用可能なタイプである.
-
None クラスごとの測度値を返す(デフォルト) "Macro" クラスごとの測度値のマクロ平均を返す "Micro" クラスごとの測度値のミクロ平均を返す - サブオプション"Direction"direction は,測度値のどの方向への変化が改善であるかを指定する.次は,方向の可能な値である.
-
Automatic measurement の方向は確度の改善に対応するように選ばれる(デフォルト) "Decreasing" measurement が減少する "Increasing" measurement が増加する - "Aggregation"aggregation オプションを使って非スカラーNetPort測度値を集めることができる.次は,使用可能な集合方法である.
-
None 配列を変更なしで返す(デフォルト) "L1Norm" 平坦化した配列のL1ノルムを返す "L2Norm" 平坦化した配列のL2ノルムを返す "Max" 平坦化した配列の最大値を返す "Mean" 平坦化した配列の平均を返す "Min" 平坦化した配列の最小値を返す "RootMeanSquare" 平坦化した配列の二乗平均平方根を返す "StandardDeviation" 平坦化した配列の標準偏差を返す "Total" 平坦化した配列の総和を返す - "Interval"->"interval"オプションは測定値をどの頻度で集めるかを指定する.次は,使用可能な間隔である.
-
Automatic 適切な間隔を自動的に選択する(デフォルト) "Batch" バッチごとに測定値を集める "Round" ラウンドごとに測定値を集める - TrainingProgressFunctionがNetTrainに与えられた場合は,要求された測度の最も新しい値の連想がキー"RoundMeasurements"および"ValidationMeasurements"を使って使用可能である.
- 測度の最終値の連想は,"RoundMeasurements"と"ValidationMeasurements"をNetTrain[net,data,properties]あるいはNetTrainResultsObjectにおける特性として指定した後で訓練して得ることができる.
- 特定の測度にアクセスするためのデフォルトのキーは測度指定に基づく.
-
"measurement" "measurement" "measurement"x "measurement" NetPort["name"] "name" NetPort[{part1,part2,…,"port"}] "part1/part2/…/port" - "Key"->"key"オプションを使って測定値へのキーが指定できる.これは,主に,同じデフォルトキーを持つ測定値位の一意的な識別に便利である.
- これらの測度キーは,TrainingStoppingCriterionにおけるラウンドのアセスと確認測度にも使われる.
- テキストによるレポート形式がTrainingProgressReportingを介して指定されている場合は,測度の中に累積形式でレポートされるものや全くレポートされないものがある."Precision","Recall","F1Score"等のクラスベースの測度については,マクロ平均がレポートされる.非スカラーのNetPort[…]測度については,スカラー平均がレポートされる."ROCCurve"および"ConfusionMatrix"については,テキストによる要約がレポートされる.
- "PlotType"type サブオプションを使って測度プロットの 軸をどのようにスケールするかが指定できる.次は,使用可能なタイプである.
-
Automatic 適切なスケールを適応的に選択する(デフォルト) "Linear" 線形スケールで測度値をプロットする "Log" 対数スケールで測度値をプロットする
例題
すべて開くすべて閉じるスコープ (7)
FashionMNISTで訓練されたLeNetの最終検証精度と再現率を調べる:
FashionMNISTで訓練されたLeNetの最終的な検証と訓練の混同行列を検討する(デフォルトで訓練の進行パネルが訓練データの混同行列を示す.プロットをクリックして両者を切り替える):
"Key"オプションを使って測度値を一意的に識別し,単純化した例題で,最終ラウンド,マクロ,ミクロの,平均された特異性を調べる:
ネットワークの内部層のラウンドの平均出力を新たな出力ポートを作って調べる:
あるいは,新たな出力を作らずに同じ内部出力を調べることもできる:
CIFAR-100データ集合について訓練されたマルチタスク訓練ネットワークの出力の1つの誤り率を調べる:
カスタム関数の測定とClassifierMeasurementsを使って,まだTrainingProgressMeasurementsがサポートしていない特性を測定する:
特性と関係 (2)
"Precision","Recall","F1Score","AreaUnderROCCurve"のように,組込み測度の中には,バッチについては定義されておらず,完了したラウンドについてのみ測定されるものがある:
非バッチ測定については,"Interval"->"Batch"の設定は影響しない:
検証測度は,検証集合が与えられていてバッチについて定義されていない測度を含む場合にのみ計算される:
"IntersectionOverUnion"測度は入力とターゲットの境界ボックスが{x1,y1,x2,y2}の形式のリストとして与えられることを期待する.(x1,y1)および(x2,y2)は境界ボックスの左下のコーナーと右上のコーナーを表す座標である.
考えられる問題 (5)
簡略構文のTrainingProgressMeasurementsmeasurement は,measurement のソースが厳密に1つのときにしか使えない:
同じデフォルトキーを持つ2つ以上の測定値が要求された場合は,それらを一意的に識別するために"Key"->"key"サブオプションを使わなければならない:
カスタム関数の測定には"Key"サブオプションが指定されていなければならない:
LossFunctionに使われている出力ポートを測定しようとしても失敗するかもしれない:
テキスト
Wolfram Research (2019), TrainingProgressMeasurements, Wolfram言語関数, https://reference.wolfram.com/language/ref/TrainingProgressMeasurements.html.
CMS
Wolfram Language. 2019. "TrainingProgressMeasurements." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/TrainingProgressMeasurements.html.
APA
Wolfram Language. (2019). TrainingProgressMeasurements. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TrainingProgressMeasurements.html