这个问题在互联网上以各种形式被问到,而且有一个简单的答案,常常被忽略或混淆:
简单回答:
Keras Conv2D层在多通道输入(例如彩色图像)的情况下,将在所有颜色通道上应用滤波器,并将结果求和,生成等效于单色卷积输出图像。在
(1)您正在使用CIFAR图像数据集进行培训,该数据集由32x32颜色图像组成,即每个图像都是形状(32,32,3)(RGB=3个通道)
(2)网络的第一层是一个Conv2D层,有32个过滤器,每个过滤器指定为3x3,因此:
Conv2D(32,(3,3),padding='same',输入形状=(32,32,3))
(3)与直觉相反,Keras将每个过滤器配置为(3,3,3),即覆盖3x3像素和所有颜色通道的3D体积。作为一个次要的细节,每个过滤器有一个额外的权重为一个偏差值,按照正常的神经网络层算法。在
(4)卷积过程完全正常,除了在每个步骤用3x3x3滤波器卷积来自输入图像的3x3x3体积,并且在每个步骤产生单个(单色)输出值(例如像素)。在
(5)结果是(32,32,3)图像上指定(3,3)滤波器的Keras Conv2D卷积产生(32,32)结果,因为实际使用的滤波器是(3,3,3)。在
(6)在本例中,我们还在Conv2D层中指定了32个过滤器,因此每个输入图像的实际输出为(32,32,32)(即,您可以将其视为32个图像,每个过滤器一个,每个32x32个单色像素)。在
作为检查,可以查看由生成的层的权重计数(Param#)模型.摘要():Layer (type) Output shape Param#
conv2d_1 (Conv2D) (None, 32, 32, 32) 896
有32个过滤器,每个3x3x3(即27个权重)加上1个偏差(即每个过滤器总共28个权重)。32个过滤器x每个28个权重=896个参数。在
本文链接:https://my.lmcjl.com/post/2216.html
4 评论