Llevo semanas optimizando un modelo LSTM para series temporales financieras (ventana de 60 pasos, 3 capas ocultas de 256 unidades cada una). El problema: después de la época 5, el gradiente se vuelve prácticamente nulo en las capas inferiores (norma < 1e-7). He probado con nn.LSTM(batch_first=True, dropout=0.3), activación tanh por defecto, y optimizador Adam con lr=1e-3. ¿Alguien ha enfrentado esto? Sospecho que la inicialización ortogonal no es suficiente para secuencias tan largas. Adjunto snippet del entrenamiento:
for epoch in range(50):
for x, y in loader:
out, _ = model(x)
loss = criterion(out, y)
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
# grad norm aquí ya es casi cero