本地连接的层过滤器

时间:2019-07-26 19:43:42

标签: keras keras-layer

我在理解如何在本地连接层中使用过滤器时遇到问题。 例如,假设输入是6x6x3图像,我们使用一个Conv2D(相同的填充)和一个LocallyConnected2D,其中包含4个大小为3x3的滤镜。

filters, biases = model.layers[2].get_weights()

当我在layer.get_weights()上使用conv2D时,它将返回形状为(3,3,3,4)且偏置形状为(4, )的滤波器,这是我们期望的,因为我们有4个形状为{{1}的滤波器}。

但是3x3x3上的layer.get_weights()返回形状为LocallyConnected2D且形状为(16,36,4)的滤波器。

为什么过滤器形状为(4,4,4)

我知道本地连接的层在每个输入补丁处使用不同的过滤器。我们如何只用4个滤镜在整个图像上滑动?

1 个答案:

答案 0 :(得分:0)

读取documentation时,警告输入为32x32x364 filters的图层:

  

请注意,该层将使用(30 * 30)*(3 * 3 * 3 * 64)+(30 * 30)* 64个参数

或者:

  • 内核:(patches x patches) * (size * size * input_channels * output_channels)
  • 偏好:(patches x patches) * output_channels

翻译成您的案子

  

此层将消耗(4 * 4)*(3 * 3 * 4 * 4)个内核参数+(4 * 4)* 4个偏差参数。

说明:

  • 您的内核大小为3x3(第二个括号的第一部分)
  • 您的输入通道是4(第二个括号中的第三个数字),输出是4(第四个数字)中的
  • 对于图像6x6和此内核大小,有4x4个补丁。 (就像图像32x32将具有30x30个内核大小为3x3的补丁一样,没有填充)

对于偏差,请4x4贴片和4输出通道。