I am a trying to write a CNN from scratch in python but I am bit new to CNNs specifically the convolution layers as I am comfortable with the dense layers. I was reading Do filters have different weights for each input channel but I didn't completely understand and had a few questions. I wanted to confirm that if the input layer had 3 channels then for there to be 4 output channels you would need a total of 12 filters.
Also, can the weights(actually I am not completely sure that I know what the weights are, they are the values of the kernels right?) of a filter be a floating number as I commonly see them being described as -1, 0 ,1.
And finally, are the weights of the kernels. initialised once or rather are they changed during back propagation, as I used to have the notion that only the bias and dense layer would be changed.
Thank you so much for you time, any help is greatly appreciated.
EDIT: I have 1 more question, but I didn't feel it appropriate to make a whole new question. Basically, if I have a filter that looks like
[0,1]. The stride is 2. Now if it has to run over
[0,1,2,3,4]. First it will match
[0,1] then with
[2,3]. But won't it stop at
[2,3] and never look at 4. How do CNNs solve this problem. Do they add an extra run of
[3,4] but this would count 3 two times. Again thanks for the help.