卷积神经网络中的内核大小变化

时间:2018-10-25 20:43:11

标签: python tensorflow neural-network conv-neural-network convolution

我一直在从头开始创建卷积神经网络,并且对如何处理隐藏的卷积层的内核大小有些困惑。例如,假设我有一个MNIST作为input (28 x 28)的图片,并将其放入以下图层。

kernel_size =(5,5)的卷积层具有32个输出通道

  • 吞吐量的新维度=(32,28,28)

最大pooling层具有pool_size(2,2)和步骤(2,2)

  • 吞吐量的新维度=(32,14,14)

如果我现在想创建内核大小=(5x5)和64个输出通道的第二个卷积层,我该如何进行?这是否意味着我只需要两个新的过滤器(2 x 32 existing channels)还是内核大小更改为(32 x 5 x 5),因为已经有32个输入通道了?

由于初始输入是2D图像,由于输入现在是3维(32 x 14 x 14),因此我不知道如何对隐藏层进行卷积。

1 个答案:

答案 0 :(得分:0)

您需要64个内核,每个内核的大小为(32,5,5)。

内核的

depth(#channels),在这种情况下为32,对于RGB图像为3,对于灰度等为1,应始终与输入深度匹配,但值均相同。 例如如果您具有3x3内核,例如:[-1 0 1; -2 0 2; -1 0 1],现在您想将其与以 N 作为深度或说通道的输入进行卷积,只需将3x3内核在第三维中复制 N 次,遵循数学运算,就像1通道的情况一样,您将内核窗口乘以所有 N 通道中的所有值,然后将它们乘以内核值,得到的值仅为1项或像素。因此,最终得到的输出是一个具有1通道的矩阵:)您希望下一层的矩阵有多少深度?那就是您应该应用的内核数。因此,在您的情况下,这将是一个具有此大小(64 x 32 x 5 x 5)的内核,实际上是64个内核,每个内核具有32个通道,并且所有通道中的5x5值相同。

(“我说英语的人不是很自信,希望您能理解我的意思,如果有人编辑它,那会很好:)”)