Idée
On empile deux blocs : une couche cachée qui prend les entrées brutes, leur applique une transformation linéaire suivie d'une saturation, et produit un nouvel ensemble de mesures intermediaires ; une couche de sortie qui rejoue le même tour.
Outil
Composition de deux applications $\mathbb{R}^n \to \mathbb{R}^p \to \mathbb{R}^q$ en algèbre linéaire de spé, mais avec saturation intercalée (donc composition non linéaire).
Formule
$Z_1 = W_1 X + b_1$, $A_1 = \sigma(Z_1)$, $Z_2 = W_2 A_1 + b_2$, $\hat{Y} = \sigma(Z_2)$ ; shapes : $X \in \mathbb{R}^{n_0 \times m}$, $W_\ell \in \mathbb{R}^{n_\ell \times n_{\ell-1}}$.
Piège
Tentation : écrire $W_1$ de forme $(n_0, n_1)$ par analogie avec scikit-learn ($X W$). Avec la convention « colonne = exemple » de ce notebook ($X \in \mathbb{R}^{n_0 \times m}$), c'est l'inverse : $W_1$ a la forme $(n_1, n_0)$ et le produit s'écrit $W_1 X$, pas $X W_1$ — sinon les shapes ne se referment pas et l'erreur n'apparaît qu'à la première multiplication.