ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

trainNetwork

深層学習用のニューラル ネットワークの学習

説明

trainNetwork を使用して、深層学習による分類問題および回帰問題用の畳み込みニューラル ネットワーク (ConvNet、CNN)、長短期記憶 (LSTM) ネットワーク、または双方向 LSTM (BiLSTM) ネットワークに学習させます。ネットワークは、1 つの CPU または 1 つの GPU で学習させることができます。イメージ分類やイメージ回帰の場合、複数の GPU または並列で学習させることができます。GPU、マルチ GPU、および並列オプションの使用には Parallel Computing Toolbox™ が必要です。深層学習に GPU を使用するには、Compute Capability 3.0 以上の CUDA® 対応 NVIDIA® GPU も必要です。trainingOptions を使用して実行環境のオプションを含む学習オプションを指定します。

trainedNet = trainNetwork(imds,layers,options) は、ネットワークにイメージ分類問題について学習させます。imds は入力イメージ データを格納し、layers はネットワーク アーキテクチャを定義して、options は学習オプションを定義します。

trainedNet = trainNetwork(ds,layers,options) は、2 列の table または 2 列の cell 配列の読み取りデータを返すデータストア ds を使用してネットワークに学習させます。2 つの列はそれぞれネットワーク入力と予測される応答を指定します。

trainedNet = trainNetwork(X,Y,layers,options) は、イメージ分類問題および回帰問題についてネットワークに学習させます。X には予測子変数が含まれ、Y には categorical ラベルまたは数値応答が含まれます。

trainedNet = trainNetwork(sequences,Y,layers,options) は、分類問題および回帰問題について LSTM または BiLSTM ネットワークに学習させます。sequences は、シーケンスまたは時系列予測子が含まれる cell 配列で、Y には応答が含まれます。分類問題では、Y は categorical ベクトルか、categorical シーケンスの cell 配列です。回帰問題では、Y はターゲットの行列か、数値シーケンスの cell 配列です。

trainedNet = trainNetwork(tbl,layers,options) は、分類問題および回帰問題についてネットワークに学習させます。tbl には数値データ、またはデータへのファイル パスが含まれます。予測子は、tbl の最初の列に含まれていなければなりません。ターゲットまたは応答変数の詳細は、tblを参照してください。

trainedNet = trainNetwork(tbl,responseName,layers,options) は、分類問題および回帰問題についてネットワークに学習させます。予測子は、tbl の最初の列に含まれていなければなりません。引数 responseName は、tbl の応答変数を指定します。

[trainedNet,traininfo] = trainNetwork(___) は、前の構文の入力引数のいずれかを使用する学習に関する情報も返します。

すべて折りたたむ

データを ImageDatastore オブジェクトとして読み込みます。

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ...
    'nndemos','nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

データストアには、0 ~ 9 の数字の 10,000 個の合成イメージが格納されています。イメージは、さまざまなフォントを使用して作成された数字のイメージにランダム変換を適用して生成されたものです。数字のイメージはそれぞれ 28 x 28 ピクセルです。データストアには、カテゴリごとに同じ数のイメージが含まれます。

データストアのイメージをいくつか表示します。

figure
numImages = 10000;
perm = randperm(numImages,20);
for i = 1:20
    subplot(4,5,i);
    imshow(imds.Files{perm(i)});
end

データストアを分割して、学習セットの各カテゴリに 750 個のイメージが含まれ、テスト セットに各ラベルの残りのイメージが含まれるようにします。

numTrainingFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize');

splitEachLabel は、digitData 内のイメージ ファイルを 2 つの新しいデータストア imdsTrainimdsTest に分割します。

畳み込みニューラル ネットワーク アーキテクチャを定義します。

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

モーメンタム項付き確率的勾配降下法の既定の設定にオプションを設定します。エポックの最大回数を 20 に設定し、初期学習率 0.0001 で学習を開始します。

options = trainingOptions('sgdm', ...
    'MaxEpochs',20,...
    'InitialLearnRate',1e-4, ...
    'Verbose',false, ...
    'Plots','training-progress');

ネットワークに学習をさせます。

net = trainNetwork(imdsTrain,layers,options);

ネットワークの学習に使用されなかったテスト セットについて学習済みネットワークを実行し、イメージのラベル (数字) を予測します。

YPred = classify(net,imdsTest);
YTest = imdsTest.Labels;

精度を計算します。精度とは、テスト データ内のイメージの数に対する、classify による分類に一致するテスト データ内の真のラベルの数の比率です。

accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9460

拡張イメージ データを使用して、畳み込みニューラル ネットワークに学習させます。データ拡張は、ネットワークで過適合が発生したり、学習イメージの正確な詳細が記憶されたりすることを防止するのに役立ちます。

標本データを読み込みます。標本データは、手書き数字の合成イメージで構成されています。

[XTrain,YTrain] = digitTrain4DArrayData;

digitTrain4DArrayData は、数字の学習セットを 4 次元配列データとして読み込みます。XTrain は、28 x 28 x 1 x 5000 の配列です。

  • 28 はイメージの高さと幅。

  • 1 はチャネルの数。

  • 5000 は手書き数字の合成イメージの数。

YTrain は、各観測値のラベルが含まれる categorical ベクトルです。

ネットワークの検証用に 1000 個のイメージを残しておきます。

idx = randperm(size(XTrain,4),1000);
XValidation = XTrain(:,:,:,idx);
XTrain(:,:,:,idx) = [];
YValidation = YTrain(idx);
YTrain(idx) = [];

サイズ変更、回転、平行移動、反転など、イメージ拡張の前処理オプションを指定する imageDataAugmenter オブジェクトを作成します。イメージを、水平方向および垂直方向に最大 3 ピクセルまでのランダムな平行移動をさせたり、最大 20 度までの回転をさせたりします。

imageAugmenter = imageDataAugmenter( ...
    'RandRotation',[-20,20], ...
    'RandXTranslation',[-3 3], ...
    'RandYTranslation',[-3 3])
imageAugmenter = 
  imageDataAugmenter with properties:

           FillValue: 0
     RandXReflection: 0
     RandYReflection: 0
        RandRotation: [-20 20]
           RandScale: [1 1]
          RandXScale: [1 1]
          RandYScale: [1 1]
          RandXShear: [0 0]
          RandYShear: [0 0]
    RandXTranslation: [-3 3]
    RandYTranslation: [-3 3]

ネットワーク学習に使用する augmentedImageDatastore オブジェクトを作成し、イメージ出力サイズを指定します。学習中、データストアはイメージ拡張の実行とイメージのサイズ変更を行います。データストアは、イメージをメモリに保存せずに拡張します。trainNetwork は、ネットワーク パラメーターを更新した後、その拡張イメージを破棄します。

imageSize = [28 28 1];
augimds = augmentedImageDatastore(imageSize,XTrain,YTrain,'DataAugmentation',imageAugmenter);

畳み込みニューラル ネットワーク アーキテクチャを指定します。

layers = [
    imageInputLayer(imageSize)
    
    convolution2dLayer(3,8,'Padding','same')
    batchNormalizationLayer
    reluLayer   
    
    maxPooling2dLayer(2,'Stride',2)
    
    convolution2dLayer(3,16,'Padding','same')
    batchNormalizationLayer
    reluLayer   
    
    maxPooling2dLayer(2,'Stride',2)
    
    convolution2dLayer(3,32,'Padding','same')
    batchNormalizationLayer
    reluLayer   
    
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

モーメンタム項付き確率的勾配降下法の学習オプションを指定します。

opts = trainingOptions('sgdm', ...
    'MaxEpochs',15, ...
    'Shuffle','every-epoch', ...
    'Plots','training-progress', ...
    'Verbose',false, ...
    'ValidationData',{XValidation,YValidation});

ネットワークに学習をさせます。検証イメージは拡張されないため、検証精度が学習精度より高くなります。

net = trainNetwork(augimds,layers,opts);

標本データを読み込みます。標本データは、手書き数字の合成イメージで構成されています。3 番目の出力には、各イメージに対応する回転角度 (度単位) が含まれています。

digitTrain4DArrayData を使用して学習イメージを 4 次元配列として読み込みます。出力 XTrain は 28 x 28 x 1 x 5000 の配列で、それぞれは以下を意味します。

  • 28 はイメージの高さと幅。

  • 1 はチャネルの数。

  • 5000 は手書き数字の合成イメージの数。

YTrain には回転角度 (度単位) が含まれます。

[XTrain,~,YTrain] = digitTrain4DArrayData;

imshow を使用して、ランダムに選ばれた 20 枚の学習イメージを表示します。

figure
numTrainImages = numel(YTrain);
idx = randperm(numTrainImages,20);
for i = 1:numel(idx)
    subplot(4,5,i)    
    imshow(XTrain(:,:,:,idx(i)))
end

畳み込みニューラル ネットワーク アーキテクチャを指定します。回帰問題の場合、ネットワークの最後に回帰層を含めます。

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(12,25)
    reluLayer
    fullyConnectedLayer(1)
    regressionLayer];

ネットワーク学習オプションを指定します。初期学習率を 0.001 に設定します。

options = trainingOptions('sgdm', ...
    'InitialLearnRate',0.001, ...
    'Verbose',false, ...
    'Plots','training-progress');

ネットワークに学習をさせます。

net = trainNetwork(XTrain,YTrain,layers,options);

テスト データの予測精度を評価することによって、ネットワーク性能をテストします。predict を使用して、検証イメージの回転角度を予測します。

[XTest,~,YTest] = digitTest4DArrayData;
YPred = predict(net,XTest);

回転角度の予測値と実際の値の平方根平均二乗誤差 (RMSE) を計算することによって、モデルの性能を評価します。

rmse = sqrt(mean((YTest - YPred).^2))
rmse = single
    6.4461

sequence-to-label 分類について深層学習 LSTM ネットワークに学習をさせます。

[1] および [2] の説明に従って、Japanese Vowels データセットを読み込みます。XTrain は、特徴次元 12 の可変長の 270 個のシーケンスが含まれる cell 配列です。Y は、ラベル 1、2、...、9 の categorical ベクトルです。XTrain のエントリは行列で、行数が 12 (特徴ごとに 1 行) で、列数が可変 (タイム ステップごとに 1 列) です。

[XTrain,YTrain] = japaneseVowelsTrainData;

最初の時系列をプロットで可視化します。各ラインは特徴に対応しています。

figure
plot(XTrain{1}')
title("Training Observation 1")
numFeatures = size(XTrain{1},1);
legend("Feature " + string(1:numFeatures),'Location','northeastoutside')

LSTM ネットワーク アーキテクチャを定義します。入力サイズを 12 (入力データの特徴の数) に指定します。100 個の隠れユニットを含み、シーケンスの最後の要素を出力するように LSTM 層を指定します。最後に、サイズが 9 の全結合層を含めることによって 9 個のクラスを指定し、その後にソフトマックス層と分類層を配置します。

inputSize = 12;
numHiddenUnits = 100;
numClasses = 9;

layers = [ ...
    sequenceInputLayer(inputSize)
    lstmLayer(numHiddenUnits,'OutputMode','last')
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer]
layers = 
  5x1 Layer array with layers:

     1   ''   Sequence Input          Sequence input with 12 dimensions
     2   ''   LSTM                    LSTM with 100 hidden units
     3   ''   Fully Connected         9 fully connected layer
     4   ''   Softmax                 softmax
     5   ''   Classification Output   crossentropyex

学習オプションを指定します。ソルバーを 'adam''GradientThreshold' を 1 に指定します。ミニバッチ サイズを 27、エポックの最大回数を 100 に設定します。

ミニバッチが小さく、シーケンスが短いため、学習には CPU が適しています。'ExecutionEnvironment''cpu' に設定します。GPU が利用できる場合、GPU で学習を行うには、'ExecutionEnvironment''auto' (既定値) に設定します。

maxEpochs = 100;
miniBatchSize = 27;

options = trainingOptions('adam', ...
    'ExecutionEnvironment','cpu', ...
    'MaxEpochs',maxEpochs, ...
    'MiniBatchSize',miniBatchSize, ...
    'GradientThreshold',1, ...
    'Verbose',false, ...
    'Plots','training-progress');

学習オプションを指定して LSTM ネットワークに学習させます。

net = trainNetwork(XTrain,YTrain,layers,options);

テスト セットを読み込み、シーケンスを話者別に分類します。

[XTest,YTest] = japaneseVowelsTestData;

テスト データを分類します。学習に使用されるサイズと同じミニバッチ サイズを指定します。

YPred = classify(net,XTest,'MiniBatchSize',miniBatchSize);

予測の分類精度を計算します。

acc = sum(YPred == YTest)./numel(YTest)
acc = 0.9351

入力引数

すべて折りたたむ

ラベル付きのイメージ。categorical ラベル付きの ImageDatastore オブジェクトとして指定します。イメージ分類ネットワーク専用の ImageDatastore にデータを格納できます。

ImageDatastore を使用すると、事前取得を使用して JPG または PNG イメージ ファイルのバッチ読み取りを行うことができます。イメージの読み取りにカスタム関数を使用する場合、ImageDatastore は事前取得を行いません。

ヒント

イメージのサイズ変更を含む深層学習用のイメージの前処理を効率的に行うには、augmentedImageDatastore を使用します。

imageDatastorereadFcn オプションは通常、速度が大幅に低下するため、使用しないでください。

メモリ外のデータおよび前処理用のデータストア。2 列の table または 2 列の cell 配列のデータを返すデータストアとして指定します。2 つの列はそれぞれネットワーク入力と予測される応答を指定します。

次の表に、trainNetwork と直接互換性のあるデータストアを示します。関数 transform および combine を使用して、深層学習ネットワークに学習させるための他の組み込みデータストアを使用できます。これらの関数は、データストアから読み取られたデータを、trainNetwork に必要な 2 列の table 形式または 2 列の cell 配列形式に変換できます。詳細については、Datastores for Deep Learningを参照してください。

データストアのタイプ説明
CombinedDatastore2 つ以上の基になるデータストアから読み取られたデータを水平方向に連結します。
TransformedDatastore基になるデータストアからの読み取りデータのバッチを独自の前処理パイプラインに従って変換します。
AugmentedImageDatastore深層ニューラル ネットワークに学習させるために、サイズ変更、回転、反転、せん断、平行移動を含む、ランダムなアフィン幾何変換を適用します。
PixelLabelImageDatastoreセマンティック セグメンテーション ネットワークに学習させるために、イメージおよび対応するグラウンド トゥルース ラベルに対して、同一のアフィン幾何変換を適用します (Computer Vision Toolbox™ が必要)。
RandomPatchExtractionDatastoreイメージまたはピクセル ラベル イメージからランダム パッチのペアを抽出します (Image Processing Toolbox™ が必要)。オプションで、同一のランダムなアフィン幾何変換をパッチのペアに適用できます。
DenoisingImageDatastoreノイズ除去ネットワークに学習させるために、ランダムに生成されたガウス ノイズを適用します (Image Processing Toolbox が必要)。
カスタム ミニバッチ データストアシーケンス データ、時系列データ、またはテキスト データのミニバッチを作成します。詳細は、カスタム ミニバッチ データストアの開発を参照してください。

イメージ。4 次元数値配列として指定します。最初の 3 つの次元は高さ、幅、およびチャネルであり、最後の次元は個々のイメージにインデックスを付けます。

配列に NaN が含まれる場合、学習全体に伝播されます。ただし、ほとんどの場合に学習が収束しなくなります。

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

シーケンス データまたは時系列データ。行列の cell 配列、または行列として指定します。cell 配列入力の場合、sequences は N 行 1 列の cell 配列で、N は観測値の数です。sequences の各エントリは、行がデータ点に対応し、列がタイム ステップに対応する行列で表される時系列です。

観測値が 1 つの sequence-to-sequence 問題では、sequences は D 行 S 列の行列にすることができます。D は特徴の数、S はタイム ステップ数です。sequences が行列の場合、Y は、ラベルの categorical シーケンスまたは応答の行列でなければなりません。

シーケンス分類問題およびシーケンス回帰問題では、layers はシーケンス入力層で始まらなければなりません。

データ型: cell | single | double

応答。ラベルの categorical ベクトル、行列、4 次元数値配列、categorical 行ベクトルの cell 配列、または数値シーケンスの cell 配列として指定します。Y の形式は、問題のタイプによって異なります。

分類問題の場合、形式はタスクによって異なります。

タスク形式
イメージ分類ラベルの N 行 1 列の categorical ベクトル。N は観測値の数です。
sequence-to-label 分類
sequence-to-sequence 分類

ラベルの categorical シーケンスの N 行 1 列の cell 配列。N は観測値の数です。各シーケンスには、対応する入力シーケンスと同じ数のタイム ステップが含まれています。

観測値が 1 つの sequence-to-sequence 分類問題では、sequences を行列にすることができます。この場合、Y は、ラベルの categorical シーケンスでなければなりません。

回帰問題の場合、形式はタスクによって異なります。

タスク形式
イメージ回帰
  • N 行 R 列の行列。N は観測値の数、R は応答の数です。

  • h x w x c x N の数値配列。N は観測値の数、h x w x c は 1 つの応答のイメージ サイズです。

sequence-to-one 回帰N 行 R 列の行列。N は観測値の数、R は応答の数です。
sequence-to-sequence 回帰

数値シーケンスの N 行 1 列の cell 配列。N は観測値の数です。シーケンスは R 行の行列で、R は応答の数です。各シーケンスには、対応する入力シーケンスと同じ数のタイム ステップが含まれています。

観測値が 1 つの sequence-to-sequence 回帰問題では、sequences を行列にすることができます。この場合、Y は、応答の行列でなければなりません。

応答の正規化は、回帰用のニューラル ネットワークの学習の安定化と高速化に役立つことがよくあります。詳細は、回帰用の畳み込みニューラル ネットワークの学習を参照してください。

応答に NaN を含めることはできません。

データ型: cell | categorical | double

入力データ。最初の列に予測子、残りの列に応答を含む table として指定します。table の各行は観測値に対応します。

table の列での予測子と応答の配置は、問題のタイプによって異なります。

分類

タスク予測子応答
イメージ分類
  • イメージの絶対ファイル パスまたは相対ファイル パス。文字ベクトルとして指定します。

  • イメージ。3 次元数値配列として指定します。

categorical ラベル

sequence-to-label 分類

シーケンス データまたは時系列データを含む MAT ファイルの絶対ファイル パスまたは相対ファイル パス。

MAT ファイルには、行がデータ点に対応し、列がタイム ステップに対応する行列で表される時系列が含まれていなければなりません。

categorical ラベル

sequence-to-sequence 分類

MAT ファイルの絶対ファイル パスまたは相対ファイル パス。MAT ファイルには、エントリが各タイム ステップのラベルに対応する categorical ベクトルで表される時系列が含まれていなければなりません。

分類問題では、responseName を指定しない場合、この関数は既定で tbl の 2 列目の応答を使用します。

回帰

タスク予測子応答
イメージ回帰
  • イメージの絶対ファイル パスまたは相対ファイル パス。文字ベクトルとして指定します。

  • イメージ。3 次元数値配列として指定します。

  • スカラー値から成る 1 つ以上の列

  • 数値ベクトル

  • 3 次元数値配列を含む 1 行 1 列の cell 配列

sequence-to-one 回帰

シーケンス データまたは時系列データを含む MAT ファイルの絶対ファイル パスまたは相対ファイル パス。

MAT ファイルには、行がデータ点に対応し、列がタイム ステップに対応する行列で表される時系列が含まれていなければなりません。

  • スカラー値から成る 1 つ以上の列

  • 数値ベクトル

sequence-to-sequence 回帰

MAT ファイルの絶対ファイル パスまたは相対ファイル パス。MAT ファイルには、行が応答に対応し、列がタイム ステップに対応する行列で表される時系列が含まれていなければなりません。

回帰問題では、responseName を指定しない場合、この関数は既定で tbl の残りの列を使用します。応答の正規化は、回帰用のニューラル ネットワークの学習の安定化と高速化に役立つことがよくあります。詳細は、回帰用の畳み込みニューラル ネットワークの学習を参照してください。

シーケンス分類問題およびシーケンス回帰問題では、layers はシーケンス入力層で始まらなければなりません。

応答に NaN を含めることはできません。予測子データに NaN が含まれる場合、学習全体に伝播されます。ただし、ほとんどの場合に学習が収束しなくなります。

データ型: テーブル

入力テーブルの応答変数の名前。文字ベクトル、または文字ベクトルの cell 配列として指定します。応答が 1 つの問題では、responseNametbl の対応する変数名です。応答変数が複数ある回帰問題では、responseNametbl の対応する変数名の cell 配列です。

データ型: char | cell

ネットワーク層。Layer 配列または LayerGraph オブジェクトとして指定します。

すべての層が順に結合されたネットワークを作成する場合、配列 Layer を入力引数として使用できます。この場合、返されるネットワークは、SeriesNetwork オブジェクトになります。

有向非循環グラフ (DAG) ネットワークは複雑な構造を持ち、層は複数の入出力を持てます。DAG ネットワークを作成するには、ネットワーク アーキテクチャを LayerGraph オブジェクトとして指定して、その層グラフを trainNetwork の入力引数として使用します。

組み込まれている層の一覧については、深層学習層の一覧を参照してください。

学習オプション。関数 trainingOptions によって返される TrainingOptionsSGDMTrainingOptionsRMSProp、または TrainingOptionsADAM オブジェクトとして指定します。ネットワーク学習に使用するソルバーおよびその他のオプションを指定するには、trainingOptions を使用します。

出力引数

すべて折りたたむ

学習済みネットワーク。SeriesNetwork オブジェクトまたは DAGNetwork オブジェクトとして返されます。

Layer 配列を入力引数 layers として使用してネットワークに学習させる場合、trainedNetSeriesNetwork オブジェクトになります。LayerGraph オブジェクトを入力引数として使用してネットワークに学習させる場合、trainedNetDAGNetwork オブジェクトになります。

各反復の学習に関する情報。次のフィールドを組み合わせた構造体として返されます。

  • TrainingLoss — 各反復での損失関数値

  • TrainingAccuracy — 各反復での学習精度

  • TrainingRMSE — 各反復での学習の RMSE

  • ValidationLoss — 検証データの損失関数値

  • ValidationAccuracy — 検証精度

  • ValidationRMSE — 検証 RMSE

  • BaseLearnRate — 各反復での学習率

trainNetwork は、分類ネットワークの精度値、回帰ネットワークの RMSE 値、および学習中にネットワークを検証したときの検証メトリクスを返します。各フィールドは、学習の反復ごとに 1 つの要素を持つ数値ベクトルです。特定の反復で計算されていない値は、NaN で表されます。

詳細

すべて折りたたむ

チェックポイント ネットワークの保存と学習の再開

Deep Learning Toolbox™ では、学習の際、エポックの終了ごとに、ネットワークを .mat ファイルとして保存できます。この定期的な保存は、ネットワークまたはデータセットが大規模であり、学習に時間がかかる場合に特に便利です。学習が何らかの理由で中断された場合、最後に保存されたチェックポイント ネットワークから学習を再開できます。trainNetwork にチェックポイント ネットワークを保存させる場合は、trainingOptions の名前と値のペアの引数 'CheckpointPath' を使用してパス名を指定しなければなりません。指定したパスが存在していない場合、trainingOptions はエラーを返します。

trainNetwork は、チェックポイント ネットワーク ファイルに一意の名前を自動的に割り当てます。例の名前 net_checkpoint__351__2018_04_12__18_09_52.mat で、351 は反復回数、2018_04_12 は日付、18_09_52trainNetwork がネットワークを保存した時刻を表します。チェックポイント ネットワーク ファイルは、ダブルクリックするか、コマンド ラインで読み込みコマンドを使用すると、読み込むことができます。次に例を示します。

load net_checkpoint__351__2018_04_12__18_09_52.mat
また、ネットワークの層を trainNetwork の入力引数に使用することで、学習を再開できます。次に例を示します。

trainNetwork(XTrain,YTrain,net.Layers,options)
学習オプションと入力データは、チェックポイント ネットワークにこれらの情報が含まれていないため、手動で指定しなければなりません。例については、チェックポイント ネットワークからの学習の再開を参照してください。

浮動小数点演算

Deep Learning Toolbox に含まれる深層学習における学習、予測、検証用のすべての関数は、単精度浮動小数点演算を使用して計算を実行します。深層学習用の関数には trainNetworkpredictclassifyactivations などがあります。CPU と GPU の両方を使用してネットワークに学習させる場合、単精度演算が使用されます。

参照

[1] Kudo, M., J. Toyama, and M. Shimbo. "Multidimensional Curve Classification Using Passing-Through Regions." Pattern Recognition Letters. Vol. 20, No. 11–13, pp. 1103–1111.

[2] Kudo, M., J. Toyama, and M. Shimbo. Japanese Vowels Data Set. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

拡張機能

R2016a で導入