如何从kera中的Conv2D正确获取图层权重?

Vla*_*tiy 11 convolution keras keras-layer

我将Conv2D层定义为:

Conv2D(96, kernel_size=(5, 5),
             activation='relu',
             input_shape=(image_rows, image_cols, 1),
             kernel_initializer=initializers.glorot_normal(seed),
             bias_initializer=initializers.glorot_uniform(seed),
             padding='same',
             name='conv_1')
Run Code Online (Sandbox Code Playgroud)

这是我网络中的第一层.
输入尺寸为64 x 160,图像为1通道.
我试图从这个卷积层可视化权重,但不知道如何获得它们.
这是我现在这样做的方式:

1.Call

layer.get_weights()[0]
Run Code Online (Sandbox Code Playgroud)

这会形成一系列形状(5,5,1,96).1是因为图像是1通道.

2.使用5乘5过滤器

layer.get_weights()[0][:,:,:,j][:,:,0]
Run Code Online (Sandbox Code Playgroud)

非常难看,但我不知道如何简化这一点,任何评论都非常感激.

我不确定这些5乘5个方格.他们实际过滤了吗?
如果不是,请告诉我们如何正确地从模型中获取过滤器?

Joh*_*ohn 14

我试图显示权重,只有前25个.我有同样的问题,你做的是这个过滤器或其他东西.它似乎与源自深度置信网络或堆叠RBM的过滤器不同.

这是未经训练的可视化重量:未经训练的重量

这是经过训练的重量:

训练过的重量

奇怪的是训练后没有变化!如果你比较它们是相同的.

然后DBN RBM过滤顶部的第1层和底部的第2层: DBM RBM过滤器

如果我设置kernel_intialization ="ones",那么我会得到看起来不错的过滤器,但是尽管有许多试验和错误更改,但净损失从未减少: 在此输入图像描述

以下是显示2D Conv权重/过滤器的代码.

  ann = Sequential()
  x = Conv2D(filters=64,kernel_size=(5,5),input_shape=(32,32,3))
  ann.add(x)
  ann.add(Activation("relu"))
Run Code Online (Sandbox Code Playgroud)

...

  x1w = x.get_weights()[0][:,:,0,:]
  for i in range(1,26):
      plt.subplot(5,5,i)
      plt.imshow(x1w[:,:,i],interpolation="nearest",cmap="gray")
  plt.show()

  ann.fit(Xtrain, ytrain_indicator, epochs=5, batch_size=32)

  x1w = x.get_weights()[0][:,:,0,:]
  for i in range(1,26):
      plt.subplot(5,5,i)
      plt.imshow(x1w[:,:,i],interpolation="nearest",cmap="gray")
  plt.show()
Run Code Online (Sandbox Code Playgroud)

--------------------------- UPDATE ---------------------- -

所以我再次尝试了它,学习率为0.01而不是1e-6,并通过将图像除以255.0来使用归一化在0和1而不是0和255之间的图像.现在卷积滤波器正在改变,第一个卷积滤波器的输出如下: 未经训练的重量

您会注意到训练有素的过滤器会以合理的学习率进行更改(不是很多):训练有素的卷积滤波器

这是CIFAR-10测试集的图像七:图7 CIFAR-10汽车

这是第一个卷积层的输出: 卷积层输出

如果我采用最后的卷积层(中间没有密集层)并将其提供给未经训练的分类器,则类似于根据准确度对原始图像进行分类,但如果我训练卷积层,则最后的卷积层输出会提高精度.分类器(随机森林).

所以我会得出结论,卷积层确实是滤波器和权重.