Как выполняется операция свертки, когда на входном слое присутствует несколько каналов? (например, 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 Каждый нейрон в карте характеристик ссылается на слой m-1 с цветами, на которые ссылаются отдельные нейроны. Я не понимаю отношения, которые они выражают здесь. Являются ли ядра нейронов или пиксели и почему они ссылаются на отдельные части изображения?
Основываясь на моем примере, кажется, что одно ядро нейронов является эксклюзивным для конкретной области изображения. Почему они разделили компонент RGB на несколько регионов?