Ya tenemos todas las configuraciones previas para programar nuestra red, lo siguiente será definir una arquitectura, compilar el modelo y revisar el rendimiento de la red.
Definiremos un modelo con la clase Sequential de Keras, esta nos permitirá apilar varias capas una encima de otra para lograr el efecto de aprendizaje profundo.
La primer capa será de entrada, donde recibiremos una imagen de 28x28 pixeles en un solo canal, una vez recibida será aplanada para ser procesada como un array unidimensional.
Las siguientes 2 capas serán capas profundas con 256 y 128 neuronas respectivamente, y tendrán como función de activación la ReLU.
La capa de salida será una capa de 24 neuronas (una por cada posible clase) de activación Softmax que nos retornará un array con las probabilidades de cada letra.
model_base = tf.keras.models.Sequential(
[tf.keras.layers.Flatten(input_shape = (28, 28, 1)),
tf.keras.layers.Dense(256, activation = "relu"),
tf.keras.layers.Dense(128, activation = "relu"),
tf.keras.layers.Dense(len(classes), activation = "softmax")]
)
Si llamamos el método summary obtendremos un resumen de la arquitectura de la red.
model_base.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten_2 (Flatten) (None, 784) 0
dense_5 (Dense) (None, 256) 200960
dense_6 (Dense) (None, 128) 32896
dense_7 (Dense) (None, 24) 3096
=================================================================
Total params: 236,952
Trainable params: 236,952
Non-trainable params: 0
_________________________________________________________________