畳み込みニュ,ラルネットワ,クの特徴の可視化
この例では,畳み込みニュ,ラルネットワ,クによって学習された特徴を可視化する方法を説明します。
畳み込みニュ,ラルネットワ,クでは,“特徴”を使用して。ネットワ,クは,学習プロセスでこれらの特徴自体を学習します。学習時にネットワ,クが学習する内容は,よくわからない場合もあります。ただし,関数deepDreamImage
を使用して,学習された特徴を可視化することができます。
“畳み込み”層は,3次元の活性化ボリュムを出力します。。ネットワ,クの終わりにある“全結合“層によって出力されるチャネルは,それ以前の層によって学習された特徴の高度な組み合わせに対応しています。
deepDreamImage
を使用して,ネットワーク層の特定のチャネルを強く活性化するイメージを生成することによって,学習された特徴を可視化できます。
この例には,深度学习工具箱™および深度学习工具箱模型为GoogLeNet网络サポ,トパッケ,ジが必要です。
事前学習済みのネットワ,クの読み込み
事前学習済みのGoogLeNetネットワ,クを読み込みます。
Net = googlenet;
初期の畳み込み層の可視化
GoogLeNetネットワ,クには,複数の畳み込み層があります。ネットワークの最初の方の畳み込み層では,受容野のサイズが小さく,学習する特徴は小さく低水準になります。ネットワ,クの最後の方の層では,受容野のサ,ズが大きく,学習する特徴が大きくなります。
analyzeNetwork
を使用して,ネットワ,クア,キテクチャを表示し,畳み込み層の位置を確認します。
analyzeNetwork(净)
畳み込み層1の特徴
层
を最初の畳み込み層になるように設定します。この層はネットワ,クの2番目の層であり,“conv1-7x7_s2”
という名前が付いています。
图层= 2;name = net.Layers(layer).Name
Name = 'conv1-7x7_s2'
渠道
を@ @ンデックスのベクトル1:36
に設定することによって,deepDreamImage
を使用してこの層で学習された最初の36個の特徴を可視化します。“PyramidLevels”
を1に設定し,メリングされないようにします。メ,ジをまとめて表示するには,imtile
を使用できます。
deepDreamImage
では既定で,互換性のあるgpuが利用できる場合は,そのgpuが使用されます。そうでない場合はCPUが使用されます。GPUを使用するには,并行计算工具箱™とサポートされているGPUデバイスが必要です。サポトされているデバスにいては,Gpu計算の要件(并行计算工具箱)を参照してください。
通道= 1:36;I = deepDreamImage(net,name,channels,...“PyramidLevels”1);
|==============================================| | 迭代| |金字塔激活水平| | |力量 | | |==============================================| | 1 | 0.26 | 1 | | 2 | 6.99 | 1 | | 3 | 14.24 | 1 | | 4 | 21.49 | 1 | | 5 | 28.74 | 1 | | 6 | 35.99 | 1 | | 7 | 43.24 | 1 | | 8 | 50.50 | 1 | | 9 | 57.75 | 1 | | 10 | 65.00 | 1 | |==============================================|
图I = imtile(I,“ThumbnailSize”64年[64]);imshow (I)标题([“层”、名称、“特性”),“翻译”,“没有”)
これらの。これは,“conv1-7x7_s2”
層のフィルタ,がエッジ検出器およびカラ,フィルタ,であることを示します。
畳み込み層2の特徴
2番目の畳み込み層は“conv2-3x3_reduce”
という名前で,層6に対応します。渠道
を@ @ンデックスのベクトル1:36
に設定することによって,この層で学習された最初の36個の特徴を可視化します。
最適化プロセスで詳細な出力を表示しないようにするには,deepDreamImage。
を呼び出すときに“详细”
を“假”
に設定します。
层数= 6;name = net.Layers(layer).Name
Name = 'conv2-3x3_reduce'
通道= 1:36;I = deepDreamImage(net,name,channels,...“详细”假的,...“PyramidLevels”1);图I = imtile(I,“ThumbnailSize”64年[64]);imshow(I) name = net.Layers(layer).Name;标题([“层”、名称、“特性”),“翻译”,“没有”)
この層のフィルタ,は,最初の畳み込み層よりも複雑なパタ,ンを検出できます。
より深い畳み込み層の可視化
深い層では,それ以前の層によって学習された特徴の高水準の組み合わせを学習します。
ピラミッドレベルの数およびピラミッドレベル1つあたりの反復回数を増やすと,計算量が増加しますが,より詳細なイメージを生成できます。反復の回数を増やすには“NumIterations”
オプションを使用し,ピラミッドレベルの数を増やすには'PyramidLevels
オプションを使用します。
层数= 97;name = net.Layers(layer).Name
Name = 'inception_4e-1x1'
渠道= 1:6;I = deepDreamImage(net,name,channels,...“详细”假的,...“NumIterations”, 20岁,...“PyramidLevels”2);图I = imtile(I,“ThumbnailSize”250年[250]);imshow(I) name = net.Layers(layer).Name;标题([“层”、名称、“特性”),“翻译”,“没有”)
ネットワークの層が深くなるほどフィルターが詳細になり,複雑なパターンとテクスチャが学習されていることに注意してください。
全結合層の可視化
各クラスに最も似た化学键メ,ジを生成するには,全結合層を選択し,渠道
をクラスの@ @ンデックスに設定します。
全結合層(層142)を選択します。
层数= 142;name = net.Layers(layer).Name
Name = 'loss3-classifier'
可視化するクラスを選択するには,渠道
をこれらのクラス名の@ @ンデックスに設定します。
频道= [114 293 341 484 563 950];
クラスは,出力層(最後の層)の类
プロパティに格納されます。渠道
のエントリを選択することによって,選択されたクラスの名前を表示できます。
net.Layers(结束). class(渠道)
ans =6×1分类蜗牛老虎斑马城堡喷泉草莓
これらのクラスを強く活性化する詳細な▪▪メ▪▪ジを生成します。deepDreamImage
を呼び出すときに“NumIterations”
を100に設定すると,より詳細なメジが生成されます。全結合層で生成された@ @メ,@ @ジは,@ @メ,@ @ジクラスに対応しています。
I = deepDreamImage(net,name,channels,...“详细”假的,...“NumIterations”, 100,...“PyramidLevels”2);图I = imtile(I,“ThumbnailSize”250年[250]);imshow(I) name = net.Layers(layer).Name;标题([“层”、名称、“特性”])
生成された▪▪メ▪▪ジは選択されたクラスを強く活性化しています。“斑马”クラスとして生成されたイメージは鮮明なシマウマ模様を含み,‘城堡’クラスとして生成されたイメージはタレットと窓を含んでいます。
参考
googlenet
|deepDreamImage
|occlusionSensitivity
|gradCAM
|imageLIME