JumaRubea's picture
push files
ec24a39 verified
# Implement lenet-5 model
import numpy as np
import tensorflow.keras as tfk
import tensorflow.keras.layers as tfl
def lenet_model(input_shape):
'''
Implement Functional Keras API to train model. The model has 5 layers
-----------------------------------------------------------------------------------
1. conv layer:
k_size: (5, 5)
stride: (1, 1)
n_filters: 6
padding: 'same'
activation: relu
2. avg pooling:
pool_size: (2, 2)
3. conv layer:
k_size: (5, 5)
stride: (1, 1)
n_filters: 16
padding: 'valid'
activation: relu
4. avg pooling
pool_size: (2, 2)
strides: (2, 2)
5. conv layer:
k_size: (5, 5)
stride: (1, 1)
n_filters: 120
padding: 'valid'
activation: relu
5. flatten
6. classifier
activation: softmax
classes: 10
-----------------------------------------------------------------------------------------------------------------------
'''
input_img = tfk.Input(shape = input_shape)
z1 = tfl.Conv2D(kernel_size = (5, 5), strides = (1, 1), filters = 6, padding = 'same', activation = 'tanh')(input_img)
p1 = tfl.AveragePooling2D(pool_size = (2, 2))(z1)
z2 = tfl.Conv2D(kernel_size = (5, 5), strides = (1, 1), filters = 16, padding = 'valid', activation = 'tanh')(p1)
p2 = tfl.AveragePooling2D(pool_size = (2, 2), strides = (2, 2))(z2)
z3 = tfl.Conv2D(kernel_size = (5, 5), strides = (1, 1), filters = 120, padding = 'valid', activation = 'tanh')(p2)
flat = tfl.Flatten()(z3)
tanh = tfl.Dense(units = 84, activation = 'tanh')(flat)
output = tfl.Dense(units = 10, activation = 'softmax')(tanh)
model = tfk.Model(inputs = input_img, outputs = output)
return model