How can we theoretically compute the number of weights considering a convolutional neural network that is used to classify images into two classes:
- INPUT: 100x100 gray-scale images.
- LAYER 1: Convolutional layer with 60 7x7 convolutional filters (stride=1, valid padding).
- LAYER 2: Convolutional layer with 100 5x5 convolutional filters (stride=1, valid padding).
- LAYER 3: A max pooling layer that down-samples Layer 2 by a factor of 4 (e.g., from 500x500 to 250x250)
- LAYER 4: Dense layer with 250 units
- LAYER 5: Dense layer with 200 units
- LAYER 6: Single output unit
Assume the existence of biases in each layer. Moreover, the pooling layer has a weight (similar to AlexNet)
How many weights does this network have?
Here would be the corresponding model in Keras, but note that I am asking for how to calculate this with a formula, not in Keras.
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Conv2D, MaxPooling2D
model = Sequential()
model.add(Conv2D(60, (7, 7), input_shape = (100, 100, 1), padding="same", activation="relu")) # Layer 1
model.add(Conv2D(100, (5, 5), padding="same", activation="relu")) # Layer 2
model.add(MaxPooling2D(pool_size=(2, 2))) # Layer 3
model.add(Dense(250)) # Layer 4
model.add(Dense(200)) # Layer 5
model.summary()