Skip to content

Implementar LeakyReLU con soporte Autograd e In-place #6

@Gilberto-Galan

Description

@Gilberto-Galan

Añadir la función de activación LeakyReLU para mitigar el problema de "neuronas muertas" (dead neurons). Se priorizará la eficiencia de memoria permitiendo que la operación ocurra directamente sobre el tensor de entrada (In-place) cuando sea posible.

Criterios de Aceptación

  • API de operación: Tensor.leaky_relu(input, alpha=0.01, inplace=False).
  • Capa nn.LeakyReLU(alpha=0.01, inplace=False) en el módulo de redes.
  • Implementación del paso backward gestionando la pendiente $\alpha$ para valores $\le 0$.
  • Paridad numérica absoluta entre las versiones de CPU y GPU (CUDA).

Checklist Técnica

  • Kernel CUDA: Escribir un kernel que realice la operación ternaria y = (x > 0) ? x : x * alpha de forma paralelizada.
  • Optimización In-place: Si inplace=True, el kernel debe escribir el resultado directamente en el puntero de entrada.
  • Autograd: En el modo non-inplace, almacenar una referencia al tensor de entrada para calcular el gradiente en el backward.
  • Bindings: Exponer la operación en Python asegurando que el parámetro alpha sea configurable.

Pruebas Mínimas

  • Test de Forward: Validar salidas con valores negativos ($x \cdot \alpha$), cero y positivos ($x$).
  • Test In-place: Verificar que la dirección de memoria (id en Python) sea la misma si inplace=True.
  • Test de Gradiente: Comparar el gradiente de T-Tensor contra diferenciación numérica.

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions