卷积神经网络 - 可视化权重

Convolutional Neural Network - Visualizing weights

主要问题

我无法理解特定层的权重图。 我使用了 no-learn 的方法:plot_conv_weights(layer, figsize=(6, 6))

我正在使用 lasagne 作为我的神经网络库。

剧情还不错,就是不知道怎么解读。

神经网络结构

我使用的结构:

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 上,它表示如下:

Conv/FC Filters. The second common strategy is to visualize the weights. These are usually most interpretable on the first CONV layer which is looking directly at the raw pixel data, but it is possible to also show the filter weights deeper in the network. The weights are useful to visualize because well-trained networks usually display nice and smooth filters without any noisy patterns. Noisy patterns can be an indicator of a network that hasn’t been trained for long enough, or possibly a very low regularization strength that may have led to overfitting http://cs231n.github.io/understanding-cnn/

那为什么我的是随机的?

该结构经过训练并且在其任务中表现良好。

参考资料

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

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

通常当您可视化权重时,您要检查两件事:

  • 它们是平滑的并且涵盖了广泛的值,即它不是一堆 1 和 0。这意味着 non-linearity 正在饱和。
  • 它们具有某种结构。通常你倾向于看到定向边缘,尽管当你有像 3x3 这样的小过滤器时这更难看到。

话虽这么说,你的权重似乎并没有饱和,但它们确实看起来太随机了。 在训练期间,网络是否正确收敛? 我也对您的过滤器有多大 (30x30) 感到惊讶。不确定你想用它完成什么。