假设我有一个CNN,包含2个层,用于处理一张25×25的RGB像素图片,第一层的滤波器大小为50,卷积核大小为5×5,步长为1×1,填充为0x0。而第二层的参数与第一层相同,只是滤波器大小为100。我知道第一层通过后的激活图尺寸为21x21x3(其中的×3是因为RGB),这意味着我通过在输入图片上应用50个不同的滤波器,创建了50个尺寸为21x21x3的激活图。
我的问题是,对于第二层通过,由于我的滤波器大小为100,这是否意味着第一层的50个激活图会通过第二层的100个滤波器,每个作为感受野,这样在第二层通过时,我总共有100×50个激活图,还是说这50个激活图会在传递之前融合成一个单一的单位,使得第二层仍然只产生100个激活图?
回答:
你这里有一个小误解。卷积操作并不是保持输入图像的维度(在你的例子中是3,因为是RGB),而是跨越所有这些维度进行卷积。这意味着对于特定图像区域x大小为5x5x3的卷积操作C的输出将只是一个单一的值,而不是大小为1x3的向量。
激活图(我喜欢称之为特征图)仅仅意味着你有多少不同的卷积滤波器,因此你会得到同样多的“输出维度”堆叠。在你的例子中,输出不会是21x21x3,而是21x21x50。
对于下一层,你将同样使用(假设你使用相同的卷积核大小)5x5x50作为输入,再次产生一个单一的值。这次,你有100个输出堆栈,因此结果大小将是17x17x100。