Main Content

assembleNetwork

事前学習済みの層から深層学習ネットワークを組み立てる

説明

assembleNetwork は、学習を行わずに層から深層学習ネットワークを作成します。

assembleNetwork は次のタスクで使用します。

  • 層配列または層グラフから予測の準備が整ったネットワークへの変換。

  • インポートされた層からのネットワークの組み立て。

  • 学習済みネットワークの重みの変更。

ネットワークにゼロから学習させるには、trainNetwork を使用します。

assembledNet = assembleNetwork(layers) は、層配列または層グラフ layers を使用して予測の準備が整った深層学習ネットワークを組み立てます。

すべて折りたたむ

事前学習済みの Keras ネットワークから層をインポートし、サポートされていない層をカスタム層に置き換え、予測の準備が整ったネットワークをこれらの層から組み立てます。

Keras ネットワークのインポート

Keras ネットワーク モデルから層をインポートします。'digitsDAGnetwithnoise.h5' のネットワークは数字のイメージを分類します。

filename = 'digitsDAGnetwithnoise.h5';
lgraph = importKerasLayers(filename,'ImportWeights',true);
Warning: Unable to import some Keras layers, because they are not supported by the Deep Learning Toolbox. They have been replaced by placeholder layers. To find these layers, call the function findPlaceholderLayers on the returned object.

Keras ネットワークには、Deep Learning Toolbox™ ではサポートされていない層がいくつか含まれています。関数 importKerasLayers は警告を表示して、サポートされていない層をプレースホルダー層に置き換えます。

プレースホルダー層の置き換え

プレースホルダー層を置き換えるには、まず、置き換える層の名前を特定します。findPlaceholderLayers を使用してプレースホルダー層を見つけ、これらの層の Keras 構成を表示します。

placeholderLayers = findPlaceholderLayers(lgraph);
placeholderLayers.KerasConfiguration
ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_1'
       stddev: 1.5000

ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_2'
       stddev: 0.7000

ファイル gaussianNoiseLayer.m を現在のフォルダーに保存し、カスタム ガウス ノイズ層を定義します。次に、インポートした Keras 層と同じ構成を持つ 2 つのガウス ノイズ層を作成します。

gnLayer1 = gaussianNoiseLayer(1.5,'new_gaussian_noise_1');
gnLayer2 = gaussianNoiseLayer(0.7,'new_gaussian_noise_2');

replaceLayer を使用してプレースホルダー層をカスタム層に置き換えます。

lgraph = replaceLayer(lgraph,'gaussian_noise_1',gnLayer1);
lgraph = replaceLayer(lgraph,'gaussian_noise_2',gnLayer2);

クラス名の指定

インポートした分類層にはクラスが含まれていないため、ネットワークを組み立てる前にこれらを指定しなければなりません。クラスを指定しない場合、クラスは 12、...、N に自動的に設定されます。ここで、N はクラスの数です。

分類層の名前は 'ClassificationLayer_activation_1' です。クラスを 01、...、9 に設定してから、インポートした分類層を新しい層に置き換えます。

cLayer = lgraph.Layers(end);
cLayer.Classes = string(0:9);
lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',cLayer);

ネットワークの組み立て

assembleNetwork を使用して層グラフを組み立てます。この関数は、予測に使用する準備が整った DAGNetwork オブジェクトを返します。

net = assembleNetwork(lgraph)
net = 
  DAGNetwork with properties:

         Layers: [15x1 nnet.cnn.layer.Layer]
    Connections: [15x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

入力引数

すべて折りたたむ

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

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

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

関数 assembleNetwork は、最大で 1 つのシーケンス入力層をもつネットワークをサポートします。

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

出力引数

すべて折りたたむ

予測の準備が整った組み立て済みネットワーク。SeriesNetwork オブジェクトまたは DAGNetwork オブジェクトとして返されます。返されるネットワークは、入力引数 layers によって異なります。

  • layers が配列 Layer の場合、assembledNetSeriesNetwork オブジェクトになります。

  • layersLayerGraph オブジェクトの場合、assembledNetDAGNetwork オブジェクトになります。

バージョン履歴

R2018b で導入