2

主な問題

特定の層の重みのプロットを理解できません。no-learn のメソッドを使用しました:plot_conv_weights(layer, figsize=(6, 6))

ニューラル ネットワーク ライブラリとしてラザニアを使用しています。

プロットはうまくいきますが、それをどのように解釈すればよいかわかりません。

ニューラル ネットワークの構造

使用している構造:

InputLayer  1x31x31

Conv2DLayer 20x3x3  
Conv2DLayer 20x3x3  
Conv2DLayer 20x3x3  

MaxPool2DLayer  2x2 

Conv2DLayer 40x3x3  
Conv2DLayer 40x3x3
Conv2DLayer 40x3x3  

MaxPool2DLayer  40x2x2  


DropoutLayer        

DenseLayer  96  
DropoutLayer    96  

DenseLayer  32  
DropoutLayer    32  

DenseLayer  1 as sigmoid

最初の 3 つのレイヤーの重みは次のとおりです。

**画像について**

私にとっては、それらはランダムに見え、解釈できません!

ただし、Cs231 では、次のように表示されます。

コンバージョン/FC フィルター。2 番目の一般的な戦略は、重みを視覚化することです。これらは通常、生のピクセル データを直接見ている最初の CONV レイヤーで最も解釈可能ですが、ネットワークのより深いところにあるフィルターの重みを表示することもできます。よく訓練されたネットワークは通常、ノイズの多いパターンのない適切で滑らかなフィルターを表示するため、重みは視覚化に役立ちます。ノイズの多いパターンは、十分な期間トレーニングされていないネットワークの指標である可能性があります。または、正則化の強度が非常に低く、過学習につながった可能性があります http://cs231n.github.io/understanding-cnn/

では、なぜ私のものはランダムなのですか?

構造は訓練されており、そのタスクに対して適切に機能します。

参考文献

http://cs231n.github.io/understanding-cnn/

https://github.com/dnouri/nolearn/blob/master/nolearn/lasagne/visualize.py
4

1 に答える 1

2

通常、重みを視覚化するときは、次の 2 つのことを確認します。

  • それらが滑らかで、幅広い値をカバーしていること。つまり、1 と 0 の束ではないこと。これは、非線形性が飽和していることを意味します。
  • ある種の構造を持っていること。3x3 のような小さなフィルターを使用している場合、これはより見づらくなりますが、通常、方向付けられたエッジが表示される傾向があります。

そうは言っても、重みは飽和しているようには見えませんが、実際にはランダムすぎるようです。トレーニング中、ネットワークは正しく収束しましたか? また、フィルターの大きさ (30x30) にも驚かされます。あなたがそれで何を達成しようとしているのか分かりません。

于 2017-01-12T06:21:22.207 に答える