Creación de un modelo de aprendizaje profundo

Nuestro modelo de red neuronal constará de una pila lineal de capas. Para definir tal modelo, llamamos alSequential función -

model = Sequential()

Capa de entrada

Definimos la capa de entrada, que es la primera capa en nuestra red usando la siguiente declaración de programa:

model.add(Dense(512, input_shape=(784,)))

Esto crea una capa con 512 nodos (neuronas) con 784 nodos de entrada. Esto se muestra en la siguiente figura:

Tenga en cuenta que todos los nodos de entrada están completamente conectados a la Capa 1, es decir, cada nodo de entrada está conectado a los 512 nodos de la Capa 1.

A continuación, necesitamos agregar la función de activación para la salida de la Capa 1. Usaremos ReLU como nuestra activación. La función de activación se agrega usando la siguiente declaración de programa:

model.add(Activation('relu'))

A continuación, agregamos la deserción del 20% utilizando la siguiente declaración. La deserción es una técnica utilizada para evitar que el modelo se sobreajuste.

model.add(Dropout(0.2))

En este punto, nuestra capa de entrada está completamente definida. A continuación, agregaremos una capa oculta.

Capa oculta

Nuestra capa oculta constará de 512 nodos. La entrada a la capa oculta proviene de nuestra capa de entrada previamente definida. Todos los nodos están completamente conectados como en el caso anterior. La salida de la capa oculta irá a la siguiente capa en la red, que será nuestra capa final y de salida. Usaremos la misma activación de ReLU que para la capa anterior y un abandono del 20%. El código para agregar esta capa se proporciona aquí:

model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))

La red en esta etapa se puede visualizar de la siguiente manera:

A continuación, agregaremos la capa final a nuestra red, que es la capa de salida. Tenga en cuenta que puede agregar cualquier cantidad de capas ocultas usando un código similar al que ha usado aquí. Agregar más capas haría que la red fuera compleja para el entrenamiento; sin embargo, ofrece una clara ventaja de mejores resultados en muchos casos, aunque no en todos.

Capa de salida

La capa de salida consta de solo 10 nodos, ya que queremos clasificar las imágenes dadas en 10 dígitos distintos. Agregamos esta capa, usando la siguiente declaración:

model.add(Dense(10))

Como queremos clasificar la salida en 10 unidades distintas, usamos la activación softmax. En el caso de ReLU, la salida es binaria. Agregamos la activación usando la siguiente declaración:

model.add(Activation('softmax'))

En este punto, nuestra red se puede visualizar como se muestra en el siguiente diagrama:

En este punto, nuestro modelo de red está completamente definido en el software. Ejecute la celda de código y si no hay errores, recibirá un mensaje de confirmación en la pantalla como se muestra en la captura de pantalla a continuación:

A continuación, necesitamos compilar el modelo.