13 · Proyecto: clasificador binario ANN (numpy de extremo a extremo)
Construye un clasificador ANN completo de 2 capas desde cero en numpy — forward pass, pérdida BCE, backprop manual, SGD de mini-lotes — luego compara con el equivalente en PyTorch.
Construye un clasificador binario ANN completo desde cero en numpy — de extremo a extremo, sin PyTorch — luego mira la versión read-along de PyTorch lado a lado.
Sin esto:
Todas las lecciones se quedan teóricas; este proyecto muestra el ensamblaje.
Esta es la síntesis de los capítulos 1-3. Conoces las piezas móviles: forward pass, pérdida BCE, retropropagación (regla de la cadena), descenso de gradiente, He init, dropout. Ahora las ensamblas en un clasificador binario funcional — sin frameworks, solo numpy.
El beneficio es doble:
- Verás exactamente qué líneas de PyTorch corresponden a qué líneas de la versión manual.
- Tendrás un modelo mental de depuración: cuando algo salga mal en una red PyTorch, sabrás qué está haciendo el framework por debajo.
El dataset es sintético (4 características, 500 muestras, 2 clases) generado por make_classification de scikit-learn. Compararemos nuestro ANN hecho a mano contra una línea base de regresión logística y mostraremos que la capa oculta permite fronteras de decisión no lineales.
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Read-along de PyTorch: el mismo ANN de 2 capas en ~30 líneas
Tu ANN hecho a mano supera la regresión logística en este dataset porque...
- Forward pass de un ANN de 2 capas: X -> (W1*X+b1) -> ReLU -> (W2*a1+b2) -> sigmoid -> probabilidad.
- El backprop a través de sigmoid+BCE se simplifica a dz2 = (p - y)/m — una de las coincidencias limpias del cálculo.
- SGD de mini-lotes con momentum: caché de velocidad v = b*v - lr*grad; param += v.
- El ANN supera la regresión logística porque la capa oculta permite fronteras de decisión no lineales en el espacio de características.
Todo tutorial de PyTorch sobre clasificación tabular trae un script casi idéntico. Conocerlo desde cero te permite depurar 'por qué no está disminuyendo mi pérdida' en cualquier framework.
Si lo quitas: Usarías las abstracciones de PyTorch como una caja negra — y no tendrías un modelo mental de lo que está ocurriendo cuando el entrenamiento falla.