当输入层存在多个通道时(例如RGB),卷积运算是如何进行的?
阅读有关CNN架构/实现的相关内容后,我了解到特征映射中的每个神经元都引用由内核大小定义的NxM像素图像。然后,每个像素点都经过特征映射学习的NxM权重集合(即卷积核/滤波器)因子化、相加,并输入激活函数中。对于一个简单的灰度图像,我想这个运算应该遵循以下伪代码:
for i in range(0, image_width-kernel_width+1):
for j in range(0, image_height-kernel_height+1):
for x in range(0, kernel_width):
for y in range(0, kernel_height):
sum += kernel[x,y] * image[i+x,j+y]
feature_map[i,j] = act_func(sum)
sum = 0.0
然而,我不知道如何扩展这个模型来处理多个通道。每个特征图是否需要三个独立的权重集,在每个颜色之间共享?
参考这个教程的“共享权重”部分:http://deeplearning.net/tutorial/lenet.html 每个特征图中的每个神经元都引用了前一层,颜色是从不同的神经元引用的。我不理解他们在表达什么关系。这些神经元是卷积核还是像素?为什么它们引用图像的不同部分?
根据我的例子,似乎单个神经元内的卷积核专属于图像的特定区域。为什么他们要将RGB组件分割成几个区域?