Skip to content

Implementar Dropout con gestión de estados Train/Eval #9

Description

@Gilberto-Galan

Añadir una capa de Dropout para reducir el sobreajuste (overfitting). Esta tarea requiere que el motor gestione estados de entrenamiento donde se "apagan" neuronas aleatoriamente, frente a estados de evaluación donde el modelo es determinista.

Criterios de Aceptación

  • Implementación de nn.Dropout(p=0.5).
  • Escalado Invertido: Escalar activaciones por $1/(1-p)$ durante el entrenamiento para mantener la magnitud en la inferencia.
  • Soporte para cambio de estado global mediante model.train() y model.eval().

Checklist Técnica

  • Generación Aleatoria: Integrar cuRAND para generar máscaras binarias directamente en la GPU.
  • Gestión de Máscara: El nodo de Autograd debe almacenar la máscara generada durante el forward para aplicarla de forma idéntica en el backward.
  • Propagación de Estado: Modificar la clase base Module para que el flag training se herede en todas las subcapas.
  • Kernel de Aplicación: Implementar un kernel CUDA que multiplique el tensor por la máscara y el factor de escala.

Pruebas Mínimas

  • Test Estadístico: Verificar que en modo train, aproximadamente el $(p \cdot 100)%$ de los elementos sean cero.
  • Test de Inferencia: Asegurar que en modo eval, la salida sea exactamente igual a la entrada.
  • Test de Escala: Validar que la suma de activaciones en train sea estadísticamente similar a la suma en eval.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions