ドキュメンテーション

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

ディープ ネットワーク デザイナーからの MATLAB コードの生成

ディープ ネットワーク デザイナー アプリでは、アプリで作成または編集するネットワークの MATLAB® コードを生成できます。スクリプトを生成した後、次のことを実行できます。

  • スクリプトを実行して、アプリで作成されたネットワーク層を再作成する。

  • ネットワークに学習させるために、スクリプトを実行し、層を関数 trainNetwork に指定する。

  • コードを調べて、プログラムで層を作成および結合する方法を確認する。

  • 層に変更を加えるために、コードを編集するか、スクリプトを実行して編集のためにネットワークをアプリにインポートし直す。

MATLAB コードの生成とネットワーク層の再作成

ディープ ネットワーク デザイナーで MATLAB コードを生成するには、次のいずれかのオプションを選択します。

  • ネットワークに層を再作成するスクリプトを生成するには、[エクスポート][コード生成] を選択します。

  • 学習可能なパラメーターを含むネットワークを再作成するスクリプトを生成するには、[エクスポート][事前学習済みパラメーターを使用したコード生成] を選択します。アプリによって、ネットワークからスクリプトと、学習可能なパラメーター (重みとバイアス) を含む MAT ファイルが作成されます。スクリプトを実行して、MAT ファイルからの学習可能なパラメーターを含むネットワーク層を再作成します。転移学習を実行する場合、このオプションを使用して重みを保持します。

生成されたスクリプトを実行すると、ネットワーク アーキテクチャがワークスペースの変数として返されます。ネットワーク アーキテクチャによって、変数は lgraph という名前の層グラフ、または layers という名前の層配列になります。

ネットワークの学習

層に学習させる必要がある場合、関数 trainNetwork に層グラフまたは層配列を指定します。

net = trainNetwork(data,lgraph,options);
学習前に、データと学習オプションを定義しなければなりません。この例では、ディープ ネットワーク デザイナーを使用した転移学習に示すように、転移学習用に準備された GoogLeNet ネットワークの学習に適したデータとオプションを定義します。

  1. データを定義します。この例では、学習セットと検証セットに分割された 5 つのクラスがあるイメージ データストアを使用します。

    unzip('MerchData.zip');
    imds = imageDatastore('MerchData', ...
        'IncludeSubfolders',true, ...
        'LabelSource','foldernames');
    [imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,'randomize');
    
    通常は、ネットワークの入力サイズに一致するようにイメージのサイズを変更する必要があります。事前学習済みネットワーク GoogLeNet に一致するように、学習時にサイズを 224 x 224 に変更します。

    augimdsTrain = augmentedImageDatastore([224 224],imdsTrain);
    augimdsValidation = augmentedImageDatastore([224 224],imdsValidation);
  2. 学習オプションを定義します。たとえば、進行状況プロットをオンにして、検証データを指定し、各反復で使用するイメージの数 (MiniBatchSize) およびデータセット全体で実行する学習サイクルの回数 (MaxEpochs) を指定します。転移学習用に、InitialLearnRate を小さい値に設定して、転移層での学習速度を下げます。

    options = trainingOptions('sgdm', ...
      'MiniBatchSize',10, ...
      'MaxEpochs',6, ...
      'InitialLearnRate',1e-4, ...
      'Shuffle','every-epoch', ...
      'ValidationData',augimdsValidation, ...
      'ValidationFrequency',10, ...
      'Verbose',false, ...
      'Plots','training-progress');

  3. ネットワーク層を再作成するには、生成されたスクリプトを実行します。

  4. ネットワークに学習させるには、指定されたデータと学習オプションを使用して、関数 trainNetwork に層グラフまたは層配列を指定します。

    net = trainNetwork(augimdsTrain,lgraph,options);

ディープ ネットワーク デザイナーに準備されたネットワークで転移学習用の学習オプションを設定するスクリプトの例については、ディープ ネットワーク デザイナーからエクスポートされたネットワークの学習を参照してください。

ネットワークを使用した予測

学習済みネットワークを予測に使用するには、関数 predict を使用します。たとえば、ネットワークを使用して peppers.png のクラスを予測します。

img = imread("peppers.png");
img = imresize(img, [128, 128]);
label = predict(net, img);
imshow(img);
title(label);

学習オプションを設定し、学習済みネットワークの精度を評価する方法を示すコマンド ラインの例については、分類用のシンプルな深層学習ネットワークの作成およびイメージ分類用の残差ネットワークの学習を参照してください。

参考

| |

関連するトピック