Esto es una red neuronal recurrente
W, U = np.random.randn(4, 4) * 0.5, np.random.randn(4, 3) * 0.5
h = np.zeros(4)
for t in range(6):
h = np.tanh(W @ h + U @ xs[t]) # las mismas W y U en cada paso
Un estado oculto h, actualizado por los mismos pesos en cada paso. Esa es toda la estructura, y ya la has construido dos veces hoy: una para Fibonacci y otra para el pronóstico aéreo.
Lo único que añade una RNN es la no linealidad tanh y una segunda matriz U que deja entrar nueva entrada en cada paso.