Capas de pooling en una red neuronal convolucional

Autor: | Última modificación: 24 de agosto de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

Las capas de pooling en una red neuronal convolucional son una de las vertientes de capas de una posible arquitectura de las redes neuronales convolucionales dentro del aprendizaje profundo (Deep Learning) del manejo de los macrodatos.

Saber cómo se desenvuelven estos factores es de suma importancia para este tipo de estudios, puesto que según el tipo de imágenes que se aborden has de seleccionar cuál es la mejor solución para el procesamiento de los macrodatos.

Por este motivo, en el desarrollo de este post te exponemos cómo funcionan las capas de pooling en una red neuronal convolucional, de manera que puedas tenerlas en cuenta cuando una de ellas se ajuste a las medidas necesarias en tu análisis del Big Data.

Redes neuronales convolucionales

Antes de conocer las capas de pooling en una red neuronal convolucional, resulta necesario recordar que las redes convolucionales funcionan de forma opuesta al procesamiento de imágenes clásico de un algoritmo definido por humanos.

Las redes neuronales convolucionales se caracterizan por ser una serie de redes que fueron creadas pensando en cómo funciona el cerebro, de manera que estas sean capaces de aprender cómo funcionan los diferentes niveles de abstracción por medio de capas.

Así:

  • En la primera capa se diferencian las formas simples, los colores o bordes.
  • En segundo lugar, en la otra capa, se pueden distinguir las diferentes combinaciones de bordes y de colores.
  • En la última capa, la red neuronal convolucional se fija en la forma hasta averiguar qué es exactamente. 

Por otra parte, las redes neuronales convolucionales extraen automáticamente las características que, posteriormente, se emplearán para la clasificación de objetos. En consecuencia, las redes neuronales profundas imitan la arquitectura de la corteza visual de los mamíferos, extrayendo campos receptivos locales y conectándose a filtros.

Capas de pooling en una red neuronal convolucional

Las capas de pooling en una red neuronal convolucional se utilizan para ir reduciendo el tamaño de los mapas de activaciones que se estén trabajando, puesto que, de otra forma, no sería posible ejecutarlos en las GPUs (Unidades de procesamiento gráfico). Además, también ayuda a reducir el overfitting, es decir, el hecho de crear un algoritmo que funciona muy bien en nuestro conjunto de datos, pero al que se le da tremendamente mal generalizar.

Los dos tipos más comunes de capas de pooling en una red neuronal convolucional son:

max-pooling

Esta es la más común dentro de las capas de pooling en una red neuronal convolucional y se encarga de calcula el máximo de los elementos. Por otra parte, hay que tener en cuenta que esto se realiza para cada mapa de activaciones de nuestro volumen, es decir, no interviene para nada la dimensión depth en los cálculos.

Ahora, te compartimos un breve ejemplo en el que se expone el max-pooling con diferentes strides:

cnn_pooling

averag-pooling

Esta es la segunda capa más conocida y empleada dentro de las capas de pooling en una red neuronal convolucional, puesto que se encarga de calcular la media de los elementos que se están estudiando en determinada imagen.

Capas de pooling en una red neuronal convolucional 1

Como puede que ya sepas, la operación flatten nos permite pasar de un volumen de características a un vector sobre el que hacer la tarea de clasificación. Sin embargo, mediante esta operación el número de parámetros se eleva considerablemente.

Así que como alternativa a esta capa, se suelen utilizar otras como GlobalMaxPooling y GlobalAveragePooling, que permiten reducir el número de parámetros.

Por ejemplo

from tensorflow.keras.layers import GlobalMaxPooling2D,GlobalAveragePooling2D
# Inizializamos el modelo
model = Sequential()

# Definimos una capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu', input_shape=(32, 32, 3)))

# Definimos una segunda capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))

# Definimos una tercera capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))

# Añadimos nuestro clasificador
model.add(GlobalAveragePooling2D())
model.add(Dense(10, activation='softmax'))

# Compilamos el modelo
model.compile(loss='categorical_crossentropy',
              optimizer=Adam(lr=0.001, decay=1e-6),
              metrics=['accuracy'])

# Entrenamos el modelo
model.fit(X_train_norm, to_categorical(Y_train),
          batch_size=128,
          shuffle=True,
          epochs=10,
          validation_data=(X_test_norm, to_categorical(Y_test))) # aquí deberíamos usar un conjunto distinto al de test!!!

# Evaluamos el modelo
scores = model.evaluate(X_test_norm, to_categorical(Y_test))

#Observamos el número de parámetros
model.summary()

print('Loss: %.3f' % scores[0])
print('Accuracy: %.3f' % scores[1])
Capas de pooling en una red neuronal convolucional 2
Capas de pooling en una red neuronal convolucional 3

Sigue aprendiendo Big Data

En el transcurso de este post, te has familiarizado con las principales capas de pooling en una red neuronal convolucional, de manera que ya puedes considerarlas en tu análisis de los macrodatos. Para continuar aprendiendo, te animamos a echar un vistazo al Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning.

De la mano de profesionales y en menos de nueve meses, con esta formación intensiva te convertirás en todo un experto y serás capaz de conocer e identificar las alternativas de gestión de datos más apropiadas para los estudios de los macrodatos. ¡No dudes en solicitar más información e inscríbete!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Sabías que hay más de 5.000 vacantes para desarrolladores de Big Data sin cubrir en España? 

En KeepCoding llevamos desde 2012 guiando personas como tú a áreas de alta empleabilidad y alto potencial de crecimiento en IT con formación de máxima calidad.

 

Porque creemos que un buen trabajo es fuente de libertad, independencia, crecimiento y eso ¡cambia historias de vida!


¡Da el primer paso!