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
# 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 salidaactivation: 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
# 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ónstrides: 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
# 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 salidareturn_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 entradarecurrent_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
# 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 abandononoise_shape: tensor entero, representa la forma de la máscara de abandono binaria que se multiplicará con la entradaseed: 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
# 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
# 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
# Crear capa de aplanamiento
flatten_layer = Flatten()
Embedding Capa de incrustación
Convierte enteros positivos (índices) en vectores densos de tamaño fijo.
Ejemplo
# 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.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
Tipo de datos de entrada:
- Datos de imagen: Conv2D + capa de agrupación
- Datos secuenciales: LSTM/GRU
- Datos estructurados: capa Dense
Profundidad del modelo:
- Las redes profundas requieren BatchNormalization y Dropout
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
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