Skip to content

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

@Gilberto-Galan

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions