Skip to content

Implementar LeakyReLU con soporte Autograd e In-place #6

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.

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