Keras tipos de capas comunes

Keras es una API de redes neuronales de alto nivel que proporciona una amplia variedad de tipos de capas para construir modelos de aprendizaje profundo.

La capa (Layer) es el bloque de construcción básico de Keras. Cada capa recibe datos de entrada, realiza una transformación específica y produce un resultado.

Este artículo presentará en detalle los tipos de capas más utilizados en Keras y cómo usarlos.


Tipos de capas centrales

Dense Capa totalmente conectada

La capa totalmente conectada es la capa de red neuronal más básica; cada nodo de entrada está conectado con los nodos de salida.

Ejemplo

from keras.layers import Dense

# Crear una capa totalmente conectada con 64 neuronas y función de activación ReLU
dense_layer = Dense(units=64, activation='relu')

Descripción de parámetros:

  • units: entero positivo, dimensión del espacio de salida
  • activation: función de activación, como 'relu', 'sigmoid', 'tanh', 'softmax', etc.
  • use_bias: valor booleano, si se utiliza el vector de sesgo (por defecto True)
  • kernel_initializer: método de inicialización de la matriz de pesos

Escenarios de aplicación:

  • Se utiliza en perceptrones multicapa (MLP)
  • Como última capa de un clasificador
  • Transformación de características y mapeo no lineal

Conv2D Capa de convolución 2D

Se utiliza principalmente para operaciones de convolución en procesamiento de imágenes; puede extraer características locales.

Ejemplo

from keras.layers import Conv2D

# Crear una capa de convolución con 32 núcleos de 3x3
conv_layer = Conv2D(filters=32, kernel_size=(3, 3), activation='relu')

Descripción de parámetros:

  • filters: entero, dimensión del espacio de salida (número de núcleos de convolución)
  • kernel_size: entero o tupla, ancho y alto de la ventana de convolución
  • strides: paso de convolución, por defecto (1, 1)
  • padding: 'valid' (sin relleno) o 'same' (relleno para que la salida tenga el mismo tamaño que la entrada)

Escenarios de aplicación:

  • Clasificación de imágenes
  • Detección de objetos
  • Segmentación de imágenes

LSTM Capa de red de memoria a largo plazo

Es una capa de red neuronal recurrente para procesar datos secuenciales; puede aprender dependencias a largo plazo.

Ejemplo

from keras.layers import LSTM

# Crear una capa LSTM con 128 unidades
lstm_layer = LSTM(units=128, return_sequences=True)

Descripción de parámetros:

  • units: entero positivo, dimensión del espacio de salida
  • return_sequences: valor booleano, si devuelve la secuencia completa (por defecto False)
  • dropout: número flotante entre 0 y 1, tasa de abandono de la transformación lineal de entrada
  • recurrent_dropout: número flotante entre 0 y 1, tasa de abandono del estado recurrente

Escenarios de aplicación:

  • Procesamiento del lenguaje natural
  • Predicción de series temporales
  • Reconocimiento de voz

Dropout Capa de desconexión aleatoria

Durante el entrenamiento, establece aleatoriamente las salidas de algunas neuronas a 0 para prevenir el sobreajuste.

Ejemplo

from keras.layers import Dropout

# Crear una capa Dropout con tasa de abandono de 0.5
dropout_layer = Dropout(rate=0.5)

Descripción de parámetros:

  • rate: número flotante entre 0 y 1, proporción de abandono
  • noise_shape: tensor entero, representa la forma de la máscara de abandono binaria que se multiplicará con la entrada
  • seed: semilla de números aleatorios

Escenarios de aplicación:

  • Prevenir el sobreajuste de redes neuronales
  • Mejorar la capacidad de generalización del modelo
  • Generalmente se usa después de la capa totalmente conectada

Otros tipos de capas importantes

BatchNormalization Capa de normalización por lotes

Normaliza por lotes la salida de la capa anterior, acelerando el entrenamiento y mejorando la estabilidad del modelo.

Ejemplo

from keras.layers import BatchNormalization

# Crear capa de normalización por lotes
bn_layer = BatchNormalization()

MaxPooling2D Capa de agrupación máxima 2D

Reduce la resolución del mapa de características tomando el valor máximo dentro de la ventana.

Ejemplo

from keras.layers import MaxPooling2D

# Crear capa de agrupación máxima de 2x2
pool_layer = MaxPooling2D(pool_size=(2, 2))

Flatten Capa de aplanamiento

Aplana la entrada multidimensional a una dimensión; se usa comúnmente para la transición de capas convolucionales a capas totalmente conectadas.

Ejemplo

from keras.layers import Flatten

# Crear capa de aplanamiento
flatten_layer = Flatten()

Embedding Capa de incrustación

Convierte enteros positivos (índices) en vectores densos de tamaño fijo.

Ejemplo

from keras.layers import Embedding

# Crear capa de embedding, tamaño de vocabulario 1000, dimensión de salida 64
embedding_layer = Embedding(input_dim=1000, output_dim=64)

Ejemplo de combinación de capas

Ejemplo

from keras.models import Sequential
from keras.layers import Dense, Dropout, Conv2D, MaxPooling2D, Flatten

# Crear un modelo CNN simple
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(64, activation='relu'),
    Dropout(0.5),
    Dense(10, activation='softmax')
])

Directrices para elegir capas

  1. Tipo de datos de entrada:

    • Datos de imagen: Conv2D + capa de agrupación
    • Datos secuenciales: LSTM/GRU
    • Datos estructurados: capa Dense
  2. Profundidad del modelo:

    • Las redes profundas requieren BatchNormalization y Dropout
  3. Tipo de tarea:

    • Tareas de clasificación: usar activación softmax en la última capa
    • Tareas de regresión: la última capa no usa función de activación o usa activación lineal
  4. Recursos computacionales:

    • Para entradas de gran tamaño, considerar el uso de capas de agrupación para reducir parámetros
    • Cuando los recursos son limitados, reducir el número de capas y unidades
Otras extensiones