メインコンテンツ

TrainingInfo

ニューラル ネットワーク学習に関する情報

R2023b 以降

    説明

    検証および損失の情報を含むニューラル ネットワーク学習に関する情報。

    作成

    trainnet の 2 番目の出力を使用して TrainingInfo オブジェクトを作成します。

    プロパティ

    すべて展開する

    学習の反復に関する情報。table として返されます。

    table には次の変数が含まれます。

    • Iteration — 反復回数

    • Loss — 学習損失

    • Metrics 学習オプションによって指定されたメトリクス。

    確率的ソルバー (SGDM、Adam、または RMSProp) を使用して学習させる場合、table には次の変数が追加されます。

    • Epoch — エポック数

    • LearnRate — 学習率

    L-BFGS ソルバーを使用して学習させる場合、table には次の変数が追加されます。

    • GradientNorm — 勾配のノルム

    • StepNorm — ステップのノルム

    データ型: table

    検証の反復に関する情報。table として返されます。

    table には次の変数が含まれます。

    • Iteration — 反復回数

    • Loss — 学習損失

    • Metrics 学習オプションによって指定されたメトリクス。

    データ型: table

    返されるネットワークに対応する反復。正の整数として返されます。

    データ型: double

    学習を停止する理由。次のいずれかの値として返されます。

    • "Max epochs completed" — 学習が MaxEpochs 学習オプションで指定されたエポック数に達した。

    • "Max iterations completed" — 学習が MaxIterations 学習オプションで指定された反復回数に達した。

    • "Stopped by OutputFcn"OutputFcn 学習オプションで指定された関数が 1 (true) を返した。

    • "Met validation criterion" — 検証損失が ValidationPatience 回数の最小値ではない。

    • "Stopped manually" — [停止] ボタンが押された。

    • "Error occurred" — ソフトウェアがエラーをスローした。

    • "Training loss is NaN" — 学習損失が NaN である。

    • "Gradient tolerance reached" — 勾配のノルムが GradientTolerance 学習オプションよりも低い。

    • "Step tolerance reached" — ステップのノルムが StepTolerance 学習オプションよりも低い。

    • "Suitable learning rate not found" — 直線探索で適切な学習率を検出できない。

    データ型: string

    オブジェクト関数

    show学習情報プロットの表示
    close学習情報プロットを閉じる

    すべて折りたたむ

    数字のサンプル データを解凍し、イメージ データストアを作成します。関数 imageDatastore は、フォルダー名に基づいてイメージに自動的にラベルを付けます。

    unzip("DigitsData.zip")
    imds = imageDatastore("DigitsData", ...
        IncludeSubfolders=true, ...
        LabelSource="foldernames");

    畳み込みニューラル ネットワーク アーキテクチャを定義します。ネットワークの入力層にイメージのサイズを指定し、最終全結合層にクラスの数を指定します。イメージはそれぞれ 28 x 28 x 1 ピクセルです。

    inputSize = [28 28 1];
    numClasses = numel(categories(imds.Labels));
    
    layers = [
        imageInputLayer(inputSize)
        convolution2dLayer(5,20)
        batchNormalizationLayer
        reluLayer
        fullyConnectedLayer(numClasses)
        softmaxLayer];

    学習オプションを指定します。

    • SGDM ソルバーを使用して 4 エポック学習させます。

    • 精度メトリクスを監視します。

    options = trainingOptions("sgdm", ...
        MaxEpochs=4, ...
        Metrics="accuracy");

    ニューラル ネットワークを学習させます。分類には、クロスエントロピー損失を使用します。学習済みネットワークと学習情報を返します。

    [net,info] = trainnet(imds,layers,"crossentropy",options);
        Iteration    Epoch    TimeElapsed    LearnRate    TrainingLoss    TrainingAccuracy
        _________    _____    ___________    _________    ____________    ________________
                1        1       00:00:01         0.01          2.7615              3.9062
               50        1       00:00:06         0.01         0.48211              85.938
              100        2       00:00:09         0.01         0.16471              96.094
              150        2       00:00:13         0.01         0.10177              96.094
              200        3       00:00:17         0.01        0.057216                 100
              250        4       00:00:20         0.01        0.031815                 100
              300        4       00:00:24         0.01        0.021116                 100
              312        4       00:00:25         0.01        0.029253              99.219
    Training stopped: Max epochs completed
    

    学習情報を表示します。

    info
    info = 
      TrainingInfo with properties:
    
               TrainingHistory: [312×5 table]
             ValidationHistory: [0×0 table]
        OutputNetworkIteration: 312
                    StopReason: "Max epochs completed"
    
    

    show 関数を使用して、学習情報をプロットに表示します。

    show(info)

    close 関数を使用してプロットを閉じます。

    close(info)

    バージョン履歴

    R2023b で導入