Main Content

ディープ ネットワーク デザイナーを使用したネットワークの構築

ディープ ネットワーク デザイナー アプリを使用して、深層学習ネットワークを対話形式で構築および編集します。このアプリを使用すると、ネットワークをインポートするかネットワークをゼロから構築し、層のプロパティの表示と編集、ネットワークの結合、およびコードの生成を行って、ネットワーク アーキテクチャを作成することができます。

ディープ ネットワーク デザイナーは、さまざまなネットワーク構築タスクに使用できます。

[層のライブラリ] からブロックをドラッグして結合することによって、ネットワークを組み立てます。層をすばやく検索するには、[層のライブラリ] ペインの [層のフィルター] 検索ボックスを使用します。

Designer pane of Deep Network Designer with an imageInputLayer connected to a convolution2dLayer and an unconnected reluLayer

You can add layers from the workspace to the network in the Designer pane.

  1. Click New.

  2. Pause on From Workspace and click Import.

  3. Choose the layers or network to import and click OK.

  4. Click Add to add the layers or network to the Designer pane.

You can also load pretrained networks by clicking New and selecting them from the start page.

層のプロパティを表示して編集するには、層を選択します。層のプロパティに関する情報については、層の名前の横にあるヘルプ アイコンをクリックしてください。

Properties pane displaying the properties of a crossChannelNormalizationLayer

すべての層のプロパティについては、深層学習層の一覧の表の層の名前をクリックしてください。

ネットワークを構築したら、それを解析してエラーの有無をチェックすることができます。詳細については、ネットワークの確認を参照してください。

転移学習

転移学習は、深層学習アプリケーションでよく使用されています。事前学習済みのネットワークを取得して、新しいタスクの学習の開始点として使用できます。通常は、転移学習によってネットワークを微調整する方が、ランダムに初期化された重みでゼロからネットワークに学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を高速に転移できます。

ディープ ネットワーク デザイナーには、イメージ データで転移学習を行うのに適したさまざまな事前学習済みのネットワークが用意されています。

事前学習済みのネットワークの読み込み

アプリを開き、事前学習済みのネットワークを選択します。[新規] をクリックして事前学習済みのネットワークを読み込むこともできます。ネットワークをダウンロードする必要がある場合は、そのネットワークで [インストール] をクリックしてアドオン エクスプローラーを開きます。

ヒント

はじめに、SqueezeNet や GoogLeNet など、高速なネットワークのいずれかを選択してみてください。どの設定が適切に機能するかを理解したら、Inception-v3 や ResNet などのより正確なネットワークを試し、結果が改善されるか確認します。事前学習済みのネットワークの選択の詳細については、事前学習済みの深層ニューラル ネットワークを参照してください。

Deep Network Designer start page showing available networks

事前学習済みのネットワークの適応

転移学習用のネットワークを準備するために、最後の学習可能な層を編集します。

  • 最後の学習可能な層が 2 次元畳み込み層 (SqueezeNet の 'conv10' 層など) の場合は、次のようにします。

    • 畳み込み層を選択します。[プロパティ] ペインの下部で、[層のロックを解除] をクリックします。これにより層のプロパティのロックが解除され、それらを新しいタスクに適応できるようになります。[NumFilters] プロパティを新しいクラス数に設定します。

    • [WeightLearnRateFactor] および [BiasLearnRateFactor] の値を増やして学習率を変更し、新しい層での学習速度を転移層より速くします。

Convolution 2-D layer selected in Deep Network Designer. The Properties pane shows NumFilters set to 5.

  • 最後の学習可能な層が全結合層 (大半の事前学習済みのネットワーク。GoogLeNet など) の場合は、次のようにします。

    • 全結合層を選択します。[プロパティ] ペインの下部で、[層のロックを解除] をクリックします。これにより層のプロパティのロックが解除され、それらを新しいタスクに適応できるようになります。[OutputSize] プロパティを新しいクラス数に設定します。

    • [WeightLearnRateFactor] および [BiasLearnRateFactor] の値を増やして学習率を変更し、新しい層での学習速度を転移層より速くします。

Fully connected layer selected in Deep Network Designer. The Properties pane shows OutputSize set to 5.

ネットワークの学習の準備が整っていることを確認するには、[解析] をクリックします。

新しいイメージを分類するために事前学習済みのネットワークに再学習させる方法を示す例については、ディープ ネットワーク デザイナーを使用した転移学習用のネットワークの準備を参照してください。Audio Toolbox™ がある場合は、オーディオ タスクに適した事前学習済みのネットワークを読み込むこともできます。新しいオーディオ信号のセットを分類するために事前学習済みのネットワークに再学習させる方法を示す例については、Adapt Pretrained Audio Network for New Data Using Deep Network Designerを参照してください。

アプリを使用して、外部のプラットフォームからネットワークをインポートすることもできます。詳細については、Import PyTorch® Model Using Deep Network Designerを参照してください。

イメージ分類

ディープ ネットワーク デザイナーでは、層を [層のライブラリ] からドラッグして結合することで、イメージ分類ネットワークを構築できます。ネットワークをコマンド ラインで作成し、そのネットワークをディープ ネットワーク デザイナーにインポートすることもできます。

たとえば、28 x 28 のイメージから成り 10 個のクラスに分割されたデータ セットでイメージ分類用に学習させるためのネットワークを作成します。

inputSize = [28 28 1];
numClasses = 10;

layers = [
    imageInputLayer(inputSize)
    convolution2dLayer(5,20)
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(numClasses)
    softmaxLayer];

deepNetworkDesigner(layers)

Image classification network in Deep Network Designer. The network starts with an image input layer and ends with a softmax layer.

このネットワークを自分のデータに適合させるには、イメージの入力サイズに合わせてイメージ入力層の [InputSize] を設定し、データのクラス数に合わせて全結合層の [OutputSize] を設定します。分類タスクがより複雑な場合は、より深いネットワークを作成します。詳細については、深いネットワークを参照してください。

イメージ分類ネットワークの作成方法と学習方法を示す例については、イメージ分類入門を参照してください。

シーケンス分類

ディープ ネットワーク デザイナーを使用すると、シーケンス ネットワークをゼロから構築することや、スタート ページから未学習のプリビルド ネットワークを使用することができます。ディープ ネットワーク デザイナーのスタート ページを開きます。[Sequence-to-Label][開く] をクリックします。これにより、シーケンス分類の問題に適したプリビルド ネットワークが開きます。

Sequence classification network in Deep Network Designer. The network starts with a sequence input layer and ends with a softmax layer.

自分のデータで学習させるために、このシーケンス ネットワークを適合させることができます。10 個の特徴と 5 個のクラスをもつデータがあるとします。このネットワークを適合させるには、[sequenceInputLayer] を選択し、[InputSize]10 に設定します。

Sequence input layer selected in Deep Network Designer. The Properties pane shows InputSize set to 10.

次に、[fullyConnectedLayer] を選択し、[OutputSize] をクラスの数である 5 に設定します。

Fully connected layer selected in Deep Network Designer. The Properties pane shows OutputSize set to 5.

シーケンス分類ネットワークの作成および学習を行う方法を示す例については、ディープ ネットワーク デザイナー入門を参照してください。

数値データの分類

数値特徴量のデータ セット (空間次元や時間次元のない数値データの集合など) がある場合、特徴入力層を使用して深層学習ネットワークに学習させることができます。特徴入力層の詳細については、featureInputLayer を参照してください。

ディープ ネットワーク デザイナーを使用して適切なネットワークを構築することができます。または、ネットワークをコマンド ラインで作成し、そのネットワークをディープ ネットワーク デザイナーにインポートすることもできます。

たとえば、10 個のクラスをもつ数値データのネットワークを作成します。ここで、各観測値は 20 個の特徴から構成されます。

inputSize = 20;
numClasses = 10;

layers = [
featureInputLayer(inputSize,Normalization="zscore")
fullyConnectedLayer(50)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer];

deepNetworkDesigner(layers)

Feature classification network in Deep Network Designer. The network starts with a feature input layer and ends with a softmax layer.

このネットワークを自分のデータに適合させるには、データに含まれる特徴の数に合わせて特徴入力層の [InputSize] を設定し、データのクラス数に合わせて全結合層の [OutputSize] を設定します。分類タスクがより複雑な場合は、より深いネットワークを作成します。詳細については、深いネットワークを参照してください。

分類ネットワークの回帰ネットワークへの変換

ネットワークの最終層を適応させると、分類ネットワークを回帰ネットワークに変換できます。変換は、事前学習済みの分類ネットワークを回帰タスク用に再学習させたい場合に役立ちます。

たとえば、事前学習済みの GoogLeNet ネットワークがあるとします。このネットワークを、1 つの応答をもつ回帰ネットワークに変換するには、ソフトマックス層を削除し、最後の全結合層の [OutputSize] を 1 (応答の数) に設定します。

Diagram of the conversion of a classification network into a regression network. The final layer of the classification network, a softmax layer, is removed.

出力に複数の応答がある場合は、全結合層の [OutputSize] の値を応答の数に変更します。

多入力および多出力ネットワーク

複数の入力

ネットワークが複数のソースのデータまたは異なる形式のデータを必要とする場合、複数の入力があるネットワークを定義できます。たとえば、ネットワークによっては、複数のセンサーから異なる解像度で取得したイメージ データを必要とする場合があります。

ディープ ネットワーク デザイナーを使用すると、各層の入力と出力を制御できます。たとえば、複数のイメージ入力をもつネットワークを作成する場合、1 つのイメージ入力層から 2 つの分岐を作成します。

Network with multiple inputs in Deep Network Designer. The network has two image input layers and a single softmax layer.

複数の出力

カテゴリカル出力と数値出力の両方を必要とするタスクのように、異なる形式の複数の応答を必要とするタスク用に、複数の出力があるネットワークを定義できます。

ディープ ネットワーク デザイナーを使用すると、各層の出力を制御できます。

The end of a network with multiple outputs. The first branch ends with a fully connected layer and a softmax layer. The second branch ends with a fully connected layer.

深いネットワーク

大規模なネットワークの構築は困難な場合がありますが、ディープ ネットワーク デザイナーを使用すると、その構築を高速化できます。層のブロックは一度に操作できます。複数の層を選択して、コピー、貼り付け、または削除します。たとえば、層のブロックを使用して、畳み込み層、バッチ正規化層、および ReLU 層のグループの複数のコピーを作成できます。

Group selection of multiple layers in Deep Network Designer.

学習済みネットワークの場合は、層をコピーすると、重みとバイアスもコピーされます。

このアプリを使用すると、ワークスペースからサブネットワークをコピーして簡単に接続することもできます。ネットワークまたは層をアプリにインポートするには、[新規][ワークスペースからインポート] をクリックします。[追加] をクリックして、その層を現在のネットワークに追加します。

ネットワークの確認

ネットワークを確認して層の詳細を調べるには、[解析] をクリックします。問題を調査して層のプロパティを調べ、ネットワークでのサイズの不一致を解決します。ディープ ネットワーク デザイナーに戻って層を編集し、[解析] を再度クリックして結果を確認します。深層学習ネットワーク アナライザーによってエラー 0 が報告されている場合、編集したネットワークの学習の準備が整っています。

Deep Learning Network Analyzer showing zero warnings or errors.

参考

| |

関連するトピック