Main Content

layerGraph

(非推奨) 深層学習用のネットワーク層のグラフ

LayerGraph オブジェクトは推奨されません。代わりに、dlnetwork オブジェクトを使用してください。詳細については、バージョン履歴を参照してください。

説明

層グラフは、深層学習層の有向非循環グラフ (DAG) としてニューラル ネットワークのアーキテクチャを指定します。この層は、複数の入力と複数の出力をもつことができます。

作成

説明

lgraph = layerGraph は、層が含まれない空の層グラフを作成します。関数 addLayers を使用して空のグラフに層を追加できます。

lgraph = layerGraph(layers) は、ネットワーク層の配列から層グラフを作成し、Layers プロパティを設定します。lgraph に含まれる層は、layers と同じ順序で結合されます。

lgraph = layerGraph(net)SeriesNetwork オブジェクト、DAGNetwork オブジェクト、または dlnetwork オブジェクトの層グラフを抽出します。たとえば、事前学習済みのネットワークの層グラフを抽出して、転移学習を実行できます。

入力引数

すべて展開する

深層学習ネットワーク。SeriesNetwork オブジェクト、DAGNetwork オブジェクト、または dlnetwork オブジェクトとして指定します。

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

ネットワーク層。Layer 配列として指定します。

この プロパティ は読み取り専用です。

層の結合。2 列の table として指定します。

各 table 行は層グラフの結合を表します。1 列目の Source は、各結合の結合元を指定します。2 列目の Destination は、各結合の結合先を指定します。結合元と結合先は層の名前であるか、"layerName/IOName" の形式を取ります。"IOName" は層の入力または出力の名前です。

データ型: table

この プロパティ は読み取り専用です。

入力層の名前。文字ベクトルの cell 配列として指定します。

データ型: cell

この プロパティ は読み取り専用です。

出力層の名前。文字ベクトルの cell 配列として指定します。

データ型: cell

オブジェクト関数

addLayersニューラル ネットワークへの層の追加
removeLayersニューラル ネットワークからの層の削除
replaceLayerニューラル ネットワークの層の置き換え
connectLayersニューラル ネットワークの層の結合
disconnectLayersニューラル ネットワークの層の切り離し
plotニューラル ネットワーク アーキテクチャのプロット

すべて折りたたむ

深層学習用のシンプルな層グラフを作成します。

この例のシンプルなネットワークは、以下から構成されます。

  • 逐次結合層による主分岐。

  • 単一の 1 x 1 畳み込み層を含む "ショートカット結合"。ショートカット結合は、パラメーターの勾配がネットワークの出力層からより初期の層へとよりスムーズに流れるようにします。

ネットワークの主分岐を層配列として作成します。加算層では複数の入力が要素単位で合計されます。加算層で合計する入力数を指定します。後で簡単に結合を追加できるように、最初の ReLU 層と加算層の名前を指定します。

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(5,16,'Padding','same')
    batchNormalizationLayer
    reluLayer('Name','relu_1')
    
    convolution2dLayer(3,32,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    convolution2dLayer(3,32,'Padding','same')
    batchNormalizationLayer
    reluLayer
    
    additionLayer(2,'Name','add')
    
    averagePooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

層配列から層グラフを作成します。layerGraphlayers のすべての層を順に結合します。層グラフをプロットします。

lgraph = layerGraph(layers);
figure
plot(lgraph)

Figure contains an axes object. The axes object contains an object of type graphplot.

1 x 1 畳み込み層を作成し、層グラフに追加します。活性化のサイズが 3 番目の ReLU 層の活性化のサイズと一致するように、畳み込みフィルターの数とストライドを指定します。この方法により、加算層で 3 番目の ReLU 層と 1 x 1 畳み込み層の出力を加算できます。層がグラフに含まれることを確認するには、層グラフをプロットします。

skipConv = convolution2dLayer(1,32,'Stride',2,'Name','skipConv');
lgraph = addLayers(lgraph,skipConv);
figure
plot(lgraph)

Figure contains an axes object. The axes object contains an object of type graphplot.

'relu_1' 層から 'add' 層へのショートカット結合を作成します。層の作成時に加算層への入力数を 2 に指定しているため、層には 'in1' および 'in2' という名前の 2 つの入力があります。3 番目の ReLU 層は既に 'in1' 入力に結合されています。'relu_1' 層を 'skipConv' 層に結合し、'skipConv' 層を 'add' 層の 'in2' 入力に結合します。ここで加算層は 3 番目の ReLU 層と 'skipConv' 層の出力を合計します。層が正しく結合されていることを確認するには、層グラフをプロットします。

lgraph = connectLayers(lgraph,'relu_1','skipConv');
lgraph = connectLayers(lgraph,'skipConv','add/in2');
figure
plot(lgraph);

Figure contains an axes object. The axes object contains an object of type graphplot.

制限

  • 層グラフ オブジェクトには、量子化情報は含まれません。量子化されたネットワークから層グラフを抽出し、次に assembleNetwork または dlnetwork を使用してネットワークを再構築すると、ネットワークから量子化情報が削除されます。

バージョン履歴

R2017b で導入

すべて折りたたむ

R2024a: 非推奨

R2024a 以降、LayerGraph オブジェクトは非推奨となりました。代わりに dlnetwork オブジェクトを使用してください。

LayerGraph オブジェクトのサポートを削除する予定はありません。ただし、dlnetwork オブジェクトには次の利点があるため、代わりにこのオブジェクトを使うことを推奨します。

  • dlnetwork オブジェクトは、ネットワークの構築、予測、組み込み学習、可視化、圧縮、検証、およびカスタム学習ループをサポートする統合されたデータ型です。

  • dlnetwork オブジェクトは、ユーザーが作成したり外部のプラットフォームからインポートしたりできる、さまざまなネットワーク アーキテクチャをサポートしています。

  • 関数 trainnetdlnetwork オブジェクトをサポートしているため、損失関数を簡単に指定できます。組み込みの損失関数を選択するか、カスタム損失関数を指定できます。

  • dlnetwork オブジェクトを使用した学習と予測は、通常、LayerGraphtrainNetwork を使用したワークフローよりも高速です。

LayerGraph オブジェクトをサポートするほとんどの関数は、dlnetwork オブジェクトもサポートします。LayerGraph オブジェクトの代表的な使用法と、代わりにオブジェクト関数 dlnetwork を使用するためのコードの更新方法を、次の表に示します。

非推奨推奨
lgraph = layerGraph;net = dlnetwork;
lgraph = layerGraph(layers);net = dlnetwork(layers,Initialize=false);
lgraph = layerGraph(net);net = dag2dlnetwork(net);
lgraph = addLayers(lgraph,layers);net = addLayers(net,layers);
lgraph = removeLayers(lgraph,layerNames);net = removeLayers(net,layerNames);
lgraph = replaceLayer(lgraph,layerName,layers);net = replaceLayer(net,layerName,layers);
lgraph = connectLayers(lgraph,s,d);net = connectLayers(net,s,d);
lgraph = disconnectLayers(lgraph,s,d);net = disconnectLayers(net,s,d);
plot(lgraph);plot(net);

dlnetwork オブジェクトとして指定されたニューラル ネットワークに学習させるには、関数 trainnet を使用します。

LayerGraph オブジェクトでは、出力層を使用する代わりに、関数 trainnet の損失関数の引数を使用して損失関数を指定してください。