Keras Deep Learning: construcción de redes neuronales profundas para mejorar la precisión del modelo

¡Acostúmbrate a escribir juntos! Este es el día 13 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .

Creación de redes neuronales profundas para mejorar la precisión del modelo

La red neuronal que usamos en el modelo anterior tenía solo una capa oculta entre las capas de entrada y salida. En esta sección, aprenderemos a usar varias capas ocultas en una red neuronal (de ahí el nombre de red neuronal profunda) para explorar el efecto de la profundidad de la red en el rendimiento del modelo.

Una red neuronal profunda significa que hay múltiples capas ocultas entre la capa de entrada y la capa de salida. Múltiples capas ocultas aseguran que las redes neuronales puedan aprender relaciones no lineales complejas entre entradas y salidas, un requisito que las redes neuronales simples no pueden cumplir. Una arquitectura de red neuronal profunda clásica se ve así:

Arquitectura de red neuronal profunda clásica

Para construir una arquitectura de red neuronal profunda mediante la adición de múltiples capas ocultas entre las capas de entrada y salida, los pasos son los siguientes.

  1. Cargue y escale el conjunto de datos:
(x_train, y_train), (x_test, y_test) = mnist.load_data()

num_pixels = x_train.shape[1] * x_train.shape[2]
x_train = x_train.reshape(-1, num_pixels).astype('float32')
x_test = x_test.reshape(-1, num_pixels).astype('float32')
x_train = x_train / 255.
x_test = x_test / 255.

y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]
复制代码
  1. Cree un modelo con varias capas ocultas entre las capas de entrada y salida:
model = Sequential()
model.add(Dense(512, input_dim=num_pixels, activation='relu'))
model.add(Dense(1024, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
复制代码

La información del modelo relevante para la arquitectura del modelo es la siguiente:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 512)               401920    
_________________________________________________________________
dense_1 (Dense)              (None, 1024)              525312    
_________________________________________________________________
dense_2 (Dense)              (None, 64)                65600     
_________________________________________________________________
dense_3 (Dense)              (None, 10)                650       
=================================================================
Total params: 993,482
Trainable params: 993,482
Non-trainable params: 0
_________________________________________________________________
复制代码

Dado que hay más capas ocultas en la arquitectura de la red neuronal profunda, también hay más parámetros en el modelo.

  1. Una vez que se construye el modelo, es hora de compilar y ajustar el modelo:
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])

history = model.fit(x_train, y_train,
                    validation_data=(x_test, y_test),
                    epochs=50,
                    batch_size=64,
                    verbose=1)
复制代码

La precisión del modelo entrenado es aproximadamente 98.9%ligeramente mejor que la precisión obtenida con la arquitectura del modelo utilizada anteriormente debido MNISTal conjunto de datos relativamente simple. Las pérdidas de entrenamiento y prueba y la precisión son las siguientes:

Entrenamiento y prueba de pérdida y precisión

Como se puede ver en la figura anterior, la precisión del conjunto de datos de entrenamiento es mucho mejor que la precisión del conjunto de datos de prueba, lo que indica que la red neuronal profunda se está sobreajustando a los datos de entrenamiento. En estudios posteriores, aprenderemos formas de evitar el sobreajuste de los datos de entrenamiento.

enlaces relacionados

Keras Deep Learning - Entrenamiento de redes neuronales sin procesar

Supongo que te gusta

Origin juejin.im/post/7086640208199811103
Recomendado
Clasificación