CNN中权重/过滤器的奇怪输出

时间:2019-01-24 09:39:18

标签: python-3.x keras deep-learning conv-neural-network

我的任务是在cnn层中可视化绘制的权重,现在当我传递参数filters = 32kernel_size = (3, 3)时,我期望通过使用{,输出为32个矩阵,每个矩阵的3x3尺寸{1}}函数(提取权重和偏差),但是我得到了一个非常奇怪的嵌套输出, 输出如下:

.get_weights()

a = model.layers[0].get_weights() a[0][0][0]

我想知道为什么我会得到这种奇怪的输出,以及如何获得理想形状的砝码。预先感谢。

2 个答案:

答案 0 :(得分:2)

神经网络中的权重是代表输入节点和输出节点(或下一层的节点)之间的连接强度的值。 Conv2D图层的权重通常为(H,W,I,O)形状,其中:-

  • H是内核高度
  • W是内核宽度
  • 我是输入通道数
  • O是输出通道数

Conv2D权重可以解释为输入通道的一部分与输出滤波器/功能图中的节点之间的连接强度。这样,您将在每个输入通道和每个输出通道之间具有shape(H,W)的权重。应当注意,权重在同一信道的不同补丁之间共享。

考虑下面的(8,8,1)输入与(2,2)内核的卷积和与(8,8,1)输出的卷积。该层的权重具有形状(2,2,1,1,1) enter image description here 可以使用相同的输入使用2(2,2)过滤器生成2个特征图,如下所示。现在,权重的形状将为(2,2,1,2)。 enter image description here

希望这将阐明如何解释卷积层的形状。

答案 1 :(得分:1)

来自Conv2D层的内核权重的形状为scaleX。所以就你而言

scaleY

如果您要打印其中一个过滤器的重量,则可以

group