I wrote a convolutional neural network for the MNIST dataset with Numpy from scratch. I am currently trying to understand every part and calculation. But one thing I noticed was the "just positive" derivative of the ReLU function.
My network structure is the following:
- (Input 28x28)
- Conv Layer (filter count = 6, filter size = 3x3, stride = 1)
- Max Pool Layer (Size 2x2) with RELU
- Conv Layer (filter count = 6, filter size = 3x3, stride = 1)
- Max Pool Layer (Size 2x2) with RELU
- Dense (128)
- Dense (10)
I noticed, when looking at the gradients, that the ReLU derivative is always (as it should be) positive. But is it right that the filter weights are always decreasing their weights? Or is there any way they can increase their weight?
Whenever I look at any of the filter's values, they decreased after training. Is that correct?
By the way, I am using stochastic gradient descent with a fixed learning rate for training.