Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

TensorFlow desde cero, Unidad 4 — Keras: API de alto nivel, 4.2 — Definición de modelos ·

Capas densas

Capas densas: la base de las redes neuronales

Introducción

Las capas densas, también conocidas como capas fully connected o dense layers, son fundamentales para la construcción de modelos de aprendizaje profundo. En Keras, una API popular y altamente integrable con TensorFlow, las capas densas son un componente esencial que permite a los modelos aprender relaciones complejas entre las variables de entrada y salidas esperadas. Estas capas se utilizan en una amplia gama de tareas de aprendizaje supervisado, como clasificación y regresión, y su correcta implementación puede marcar la diferencia entre un modelo ineficaz e insuficiente y uno que cumpla con los objetivos.

Explicación principal

Una capa densa en Keras es una matriz de pesos que se aplica a las entradas a través de una operación de producto matricial, seguida de la adición de un sesgo. La fórmula para calcular el output de una capa densa es:

\[ \text{Output} = \sigma(\mathbf{W}\cdot\mathbf{X} + \mathbf{b}) \]

Donde:

  • W son los pesos (matriz),
  • X son las entradas,
  • b es el sesgo, y
  • σ es la función de activación.

Keras proporciona varias capas densas predefinidas que puedes usar para construir tu modelo. La clase Dense en Keras es la más común:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(100,)))

En este ejemplo:

  • Se define una secuencia lineal de capas (Sequential).
  • Dense(64) especifica que la capa densa tiene 64 unidades (neuronas).
  • activation='relu' indica que se usa la función de activación ReLU.
  • input_shape=(100,) define el tamaño del tensor de entrada.

Ejemplo completo

Aquí tienes un ejemplo más completo:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, InputLayer

# Definición del modelo
model = Sequential([
    InputLayer(input_shape=(128,)),
    Dense(64, activation='relu', name='layer_1'),
    Dense(32, activation='relu', name='layer_2'),
    Dense(1, activation='sigmoid', name='output_layer')
])

# Mostrar el modelo
model.summary()

Este ejemplo crea un modelo con una capa de entrada, dos capas densas ocultas y una capa de salida con una función de activación sigmoid.

Errores típicos / trampas

  1. Omitir la función de activación: Es común olvidar especificar la función de activación en las capas ocultas, lo que puede resultar en un modelo que no aprenda correctamente.
  1. Función de activación incorrecta para el problema: Usar una función de activación como ReLU para problemas de clasificación binaria o múltiple (donde se requiere un output entre 0 y 1) puede llevar a problemas con la convergencia del modelo.
  1. Dimensiones incompatibles: No asegurar que las dimensiones de entrada coincidan con las esperadas por la capa densa puede causar errores durante el entrenamiento, como dimensiones no compatibles en la multiplicación matricial.

Checklist accionable

  1. Verifica la dimensión del input_shape al definir la primera capa densa.
  2. Elije correctamente la función de activación para cada capa según el tipo de problema.
  3. Añade una función de activación en todas las capas ocultas, a menos que estés implementando una capa especial (como Softmax).
  4. Verifica la consistencia de los tamaños de salida entre capas para evitar errores en el entrenamiento.
  5. Prueba varias combinaciones de unidades y funciones de activación para optimizar el rendimiento del modelo.

Cierre con "Siguientes pasos"

Siguientes pasos

  • Capas adicionales: Una vez que entiendas las capas densas, puedes explorar la adición de más capas, como capas convolucionales (CNN) o recurrentes (RNN).
  • Técnicas de regularización: Aprende a usar técnicas como dropout para prevenir el overfitting.
  • Optimizadores y funciones de pérdida: Experimenta con diferentes optimizadores y funciones de pérdida según tu problema de clasificación.

Siguiendo estos pasos, podrás construir modelos robustos en Keras que se adapten a una amplia gama de problemas de aprendizaje profundo.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).