The highlighed layer has 5x5 filters and the input has 6 channels. So, the number of trainable parameters for each filter is 5x5x6 + 1 (the 1 is for bias). This makes it 151 parameters per filter. Since we have 16 filters, the total number of trainable parameters is 151*16 = 2416
Hereβs lenet in code:
import tensorflow as tf
lenet = tf.keras.Sequential([
tf.keras.layers.Input(shape=(32,32,1)),
tf.keras.layers.Conv2D(filters=6, kernel_size=5, strides=1, activation='tanh'),
tf.keras.layers.AveragePooling2D(strides=2, pool_size=2),
tf.keras.layers.Activation('tanh'),
tf.keras.layers.Conv2D(filters=16, kernel_size=5, strides=1, activation='tanh'),
tf.keras.layers.AveragePooling2D(strides=2, pool_size=2),
tf.keras.layers.Activation('tanh'),
tf.keras.layers.Conv2D(filters=120, kernel_size=5, strides=1, activation='tanh'),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(units=84, activation='tanh'),
tf.keras.layers.Dense(units=10, activation='softmax'),
])
lenet.summary()
Output
Model: "sequential"
βββββββββββββββββββββββββββββββββββ³βββββββββββββββββββββββββ³ββββββββββββββββ
β Layer (type) β Output Shape β Param # β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β conv2d (Conv2D) β (None, 28, 28, 6) β 156 β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β average_pooling2d β (None, 14, 14, 6) β 0 β
β (AveragePooling2D) β β β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β activation (Activation) β (None, 14, 14, 6) β 0 β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β conv2d_1 (Conv2D) β (None, 10, 10, 16) β 2,416 β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β average_pooling2d_1 β (None, 5, 5, 16) β 0 β
β (AveragePooling2D) β β β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β activation_1 (Activation) β (None, 5, 5, 16) β 0 β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β conv2d_2 (Conv2D) β (None, 1, 1, 120) β 48,120 β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β flatten (Flatten) β (None, 120) β 0 β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β dense (Dense) β (None, 84) β 10,164 β
βββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€
β dense_1 (Dense) β (None, 10) β 850 β
βββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββ΄ββββββββββββββββ
Total params: 61,706 (241.04 KB)
Trainable params: 61,706 (241.04 KB)
Non-trainable params: 0 (0.00 B)