卷积神经网络中的叠加卷积层是如何工作的?

6

我对CNN中使用2个或更多卷积层(每个卷积层后跟一个池化层)的工作方式感到困惑。

假设输入是一张3通道300x300的图像。如果第一个卷积层有32个卷积核,第二个卷积层有64个卷积核,那么第一层将创建32个特征图。但第二层会创建多少个特征图呢?每个64个卷积核中的卷积都作用于先前生成的32个特征图,从而总共创建32*64=2048个特征图吗?还是发生了其他的事情?

与该问题相关的简单代码如下:

model = keras.models.Sequential([
keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(300, 300, 3)),
keras.layers.MaxPooling2D(2, 2),

keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.MaxPooling2D(2, 2)])
2个回答

2

输入矩阵的通道数和每个过滤器中的通道数必须匹配,才能执行逐元素乘法。

因此,第一个卷积和第二个卷积之间的主要区别在于第一个卷积中输入矩阵的通道数为3,因此我们将使用32个具有3个通道(内核矩阵深度)的过滤器。

对于第二个卷积,输入矩阵有32个通道(特征图),因此该卷积中的每个过滤器也必须具有32个通道。例如:64个过滤器中的每个过滤器都将具有32@3x3形状。

32@3x3形状的单个过滤器经过卷积步骤后的结果将是WxH(宽度,高度)形状的单个通道。在应用所有64个过滤器(其中每个过滤器的形状均为32@3x3)之后,我们将获得64个通道,其中每个通道都是单个过滤器的卷积结果。


1
第一个卷积层有32个过滤器,但它适用于图像的全部三个通道,因此第一个Conv2D之后的特征图为32x3 = 96,然后第二个Conv2D的64个过滤器分别应用于这96个特征图中的每一个,所以在第二个Conv2D之后是64x96 = ...(请填空)。
但出于简单起见,Keras只显示(...,32)或(...,64)。您可以使用model.summary()来检查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接