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

analyzeNetwork

深層学習ネットワークアーキテクチャの解析

説明

analyzeNetwork ()は,によって指定された深層学習ネットワークアーキテクチャを解析します。関数analyzeNetworkは,ネットワークアーキテクチャを対話的に可視化して表示し,ネットワークのエラーや問題を検出して,ネットワーク層についての詳細情報を提供します。層の情報には,層の活性化と学習可能なパラメーターのサイズ,学習可能なパラメーターの総数,および再帰層の状態パラメーターのサイズが含まれます。

ネットワークアナライザーを使用して,ネットワークアーキテクチャを可視化して把握し,アーキテクチャが正しく定義されていることを確認して,学習前に問題を検出します。analyzeNetworkが検出する問題には,層の欠損または未結合,層入力のサイズの誤り,層の入力数の誤り,無効なグラフ構造などがあります。

すべて折りたたむ

事前学習済みGoogLeNet畳み込みニューラルネットワークを読み込みます。

网= googlenet
net = DAGNetwork with properties: Layers:[144×1 nnet.cn .layer. layer. layer]连接:[170×2 table]

ネットワークを解析します。analyzeNetworkは,ネットワークアーキテクチャの対話型プロット,およびネットワーク層についての情報が含まれる表を表示します。

左側のプロットを使用してネットワークアーキテクチャを調べます。プロットで層を選択します。選択した層は,プロットと層の表で強調表示されます。

表には,層のプロパティ,層のタイプ,層の活性化と学習可能なパラメーターのサイズなど,層の情報が表示されます。層の活性化は,その層の出力です。

ネットワークのさらに深い层を选択します。深い层の活性化は,空间次元(最初の2つの次元)が小さくなり,チャネルの次元(最后の次元)が大きくなることに注目してください。畳み込みニューラルネットワークについてこの构造を使用すると,空间分解能を下げながら,抽出されるイメージの特徴の数を徐々に増やすことができます。

層の表の右上隅にある矢印をクリックし,(学習可能の総数)を選択して,学習可能なパラメーターの総数を表示します。列の値で層の表を並べ替えるには,列の見出しにマウスを移動して,表示される矢印をクリックします。たとえば,学習可能なパラメーターの総数で層を並べ替えると,含まれるパラメーターが最も多い層を判別できます。

analyzeNetwork(净)

ショートカット結合を使用してシンプルな畳み込みネットワークを作成します。ネットワークの主分岐を層配列として作成し,その層配列から層グラフを作成します。layerGraphは,のすべての層を順に結合します。

图层= [imageInputLayer([32 32 3]),“名字”,“输入”16)convolution2dLayer(5日,“填充”,“相同”,“名字”,“conv_1”)reluLayer (“名字”,“relu_1”)convolution2dLayer(3, 16岁,“填充”,“相同”,“步”2,“名字”,“conv_2”)reluLayer (“名字”,“relu_2”)additionLayer (2“名字”,“add1”)convolution2dLayer(3, 16岁,“填充”,“相同”,“步”2,“名字”,“conv_3”)reluLayer (“名字”,“relu_3”)additionLayer (3“名字”,“add2”)fullyConnectedLayer (10“名字”,“俱乐部”)classificationLayer (“名字”,“输出”));lgraph = layerGraph(层);

ショートカット結合を作成します。ショートカット結合の1つには,単一の1 x 1畳み込み層skipConvが含まれます。

skipConv = convolution2dLayer(1, 16岁,“步”2,“名字”,“skipConv”);lgraph = addLayers (lgraph skipConv);lgraph = connectLayers (lgraph,“relu_1”,“add1 / in2”);lgraph = connectLayers (lgraph,“add1”,“add2 / in2”);

ネットワークアーキテクチャを解析します。analyzeNetworkによってネットワークの4つのエラーが検出されます。

analyzeNetwork (lgraph)

ネットワークのエラーを調べて修正します。この例では,次の問題が原因でエラーが発生しています。

  • クラス確率を出力するソフトマックス層は,分類層の前に配置されていなければなりません。输出分類層のエラーを修正するには,分類層の前にソフトマックス層を追加します。

  • skipConv層が残りのネットワークに結合されていません。これはadd1層とadd2層のショートカット結合に含まれている必要があります。このエラーを修正するには,add1skipConvに結合し,skipConvadd2に結合します。

  • add2層の入力が3つになるように指定されていますが,この層の入力は2つしかありません。このエラーを修正するには,入力の数に2を指定します。

  • 加算層へのすべての入力のサイズは同じでなければなりませんが,add1層にサイズが異なる2つの入力があります。conv_2層の“步”の値が2であるため,この層では最初の2つの次元(空間次元)において係数2で活性化のダウンサンプリングが行われます。relu2層からの入力のサイズをrelu1からの入力のサイズと同じになるように変更するには,conv_2層の“步”の値を1に设定してダウンサンプリングを削除します。

この例の開始時からの層グラフの構築にこれらの変更を適用し,新しい層グラフを作成します。

图层= [imageInputLayer([32 32 3]),“名字”,“输入”16)convolution2dLayer(5日,“填充”,“相同”,“名字”,“conv_1”)reluLayer (“名字”,“relu_1”)convolution2dLayer(3, 16岁,“填充”,“相同”,“步”,1“名字”,“conv_2”)reluLayer (“名字”,“relu_2”)additionLayer (2“名字”,“add1”)convolution2dLayer(3, 16岁,“填充”,“相同”,“步”2,“名字”,“conv_3”)reluLayer (“名字”,“relu_3”)additionLayer (2“名字”,“add2”)fullyConnectedLayer (10“名字”,“俱乐部”)softmaxLayer (“名字”,“softmax”);classificationLayer (“名字”,“输出”));lgraph = layerGraph(层);skipConv = convolution2dLayer(1, 16岁,“步”2,“名字”,“skipConv”);lgraph = addLayers (lgraph skipConv);lgraph = connectLayers (lgraph,“relu_1”,“add1 / in2”);lgraph = connectLayers (lgraph,“add1”,“skipConv”);lgraph = connectLayers (lgraph,“skipConv”,“add2 / in2”);

新しいアーキテクチャを解析します。新しいネットワークにはエラーが含まれず,学習の準備が整っています。

analyzeNetwork (lgraph)

入力引数

すべて折りたたむ

ネットワークアーキテクチャ。配列,LayerGraphオブジェクト,SeriesNetworkオブジェクト,またはDAGNetworkオブジェクトとして指定します。

R2018aで導入