A multi-channel convolution matches each input channel with a kernel slice, computes each dot product at the same landing, then adds those totals before ReLU.

highlighted = computed this step

Each channel has a matching slice

This example has channel A and channel B. Each channel uses its matching given kernel slice at the same valid landing. The focus start is row 0, col 0.

channel Akernel A  +  channel Bkernel B\text{channel A}\cdot\text{kernel A}\;+\;\text{channel B}\cdot\text{kernel B}
Channels add before ReLUMatching channel and kernel slices are added before ReLU.channel Ac1c2c3102010201kernel slice Ac1c21001channel Bc1c2c3010101010kernel slice Bc1c20110channels add before ReLUpartexact arithmetictotalA dot1*1 + 0*0 + 0*0 + 1*12B dot0*0 + 1*1 + 1*1 + 0*02add2 + 24same landing (0,0); add channel totals before ReLUmulti-channel feature mapc1c24004valid padding, stride 1given kernel slices; one exact forward pass; channels add before ReLU; head softmax is NAMED; NOTtraining; NOT learning; NOT probability; NOT scaling proofkernel is given; valid padding and stride one; one exact forward pass; head softmax is NAMED;NOT training; NOT learning

Compute the two channel dots

At start (0,0), channel A gives 1·1 + 0·0 + 0·0 + 1·1 = 2. Channel B gives 2.

11+00+00+11=21\cdot1 + 0\cdot0 + 0\cdot0 + 1\cdot1 = 2
Channels add before ReLUMatching channel and kernel slices are added before ReLU.channel Ac1c2c3102010201kernel slice Ac1c21001channel Bc1c2c3010101010kernel slice Bc1c20110channels add before ReLUpartexact arithmetictotalA dot1*1 + 0*0 + 0*0 + 1*12B dot0*0 + 1*1 + 1*1 + 0*02add2 + 24same landing (0,0); add channel totals before ReLUmulti-channel feature mapc1c24004valid padding, stride 1given kernel slices; one exact forward pass; channels add before ReLU; head softmax is NAMED; NOTtraining; NOT learning; NOT probability; NOT scaling proofkernel is given; valid padding and stride one; one exact forward pass; head softmax is NAMED;NOT training; NOT learning

Add before ReLU

The channel totals are added into one feature-map cell before ReLU: 2 + 2 = 4.

2+2=42 + 2 = 4
Channels add before ReLUMatching channel and kernel slices are added before ReLU.channel Ac1c2c3102010201kernel slice Ac1c21001channel Bc1c2c3010101010kernel slice Bc1c20110channels add before ReLUpartexact arithmetictotalA dot1*1 + 0*0 + 0*0 + 1*12B dot0*0 + 1*1 + 1*1 + 0*02add2 + 24same landing (0,0); add channel totals before ReLUmulti-channel feature mapc1c24004valid padding, stride 1given kernel slices; one exact forward pass; channels add before ReLU; head softmax is NAMED; NOTtraining; NOT learning; NOT probability; NOT scaling proofkernel is given; valid padding and stride one; one exact forward pass; head softmax is NAMED;NOT training; NOT learning

The multi-channel feature map

Repeating the same rule at every valid start gives [[4, 0], [0, 4]]. This is one exact forward-pass example with given kernels: NOT training, NOT learning, NOT probability, and NOT scaling proof.

[4004]\begin{bmatrix}4&0\\0&4\end{bmatrix}
Channels add before ReLUMatching channel and kernel slices are added before ReLU.channel Ac1c2c3102010201kernel slice Ac1c21001channel Bc1c2c3010101010kernel slice Bc1c20110channels add before ReLUpartexact arithmetictotalA dot1*1 + 0*0 + 0*0 + 1*12B dot0*0 + 1*1 + 1*1 + 0*02add2 + 24same landing (0,0); add channel totals before ReLUmulti-channel feature mapc1c24004valid padding, stride 1given kernel slices; one exact forward pass; channels add before ReLU; head softmax is NAMED; NOTtraining; NOT learning; NOT probability; NOT scaling proofkernel is given; valid padding and stride one; one exact forward pass; head softmax is NAMED;NOT training; NOT learning