JoaquinAmatRodrigo / skforecast

Time series forecasting with machine learning models
https://skforecast.org
BSD 3-Clause "New" or "Revised" License
992 stars 113 forks source link

Error al ejecutar código de ejemplo de Deep Learning para pronóstico de series temporales en skforecast #722

Open Chuello opened 1 week ago

Chuello commented 1 week ago

Estimados desarrolladores de skforecast,

Me dirijo a ustedes con la esperanza de obtener su ayuda para resolver un error que he encontrado al intentar ejecutar el código de ejemplo de "Deep Learning para la predicción de series temporales: Redes Neuronales Recurrentes (RNN) y Long Short-Term Memory (LSTM)" disponible en la siguiente URL: https://cienciadedatos.net/documentos/py54-forecasting-con-deep-learning

He seguido cuidadosamente los pasos descritos en el ejemplo, utilizando la versión más reciente de la biblioteca skforecast (0.5.4) y TensorFlow (2.16.1). Sin embargo, al ejecutar el código en mi entorno de trabajo (Laptop con procesador AMD, Windows 11), obtengo el siguiente error:

  --------------------------------------------------------------------------- 
AttributeError     Traceback (most recent call last)
Cell In[11], line 3
1 # Creación del forecaster
2 # ==============================================================================
----> 3 forecaster = ForecasterRnn(
4 regressor=model,
5 levels=levels,
6 transformer_series=MinMaxScaler(),
7 fit_kwargs={
8 "epochs": 10, # Número de épocas para entrenar el modelo.
9 "batch_size": 32, # Tamaño del batch para entrenar el modelo.
10 "callbacks": [
11 EarlyStopping(monitor="val_loss", patience=5)
12 ], # Callback para detener el entrenamiento cuando ya no esté aprendiendo más.
13 "series_val": data_val, # Datos de validación para el entrenamiento del modelo.
14 },
15 )
16 forecaster
File c:\Users\luisc\AppData\Local\Programs\Python\Python311\Lib\site-packages\skforecast\ForecasterRnn\ForecasterRnn.py:226, in ForecasterRnn.__init__(self, regressor, levels, lags, steps, transformer_series, weight_func, fit_kwargs, forecaster_id, n_jobs, transformer_exog)
223 layer_init = self.regressor.layers[0]
225 if lags == "auto":
--> 226 self.lags = np.arange(layer_init.input_shape[0][1]) + 1
227 warnings.warn(
228 "Setting `lags` = 'auto'. `lags` are inferred from the regressor "
229 "architecture. Avoid the warning with lags=lags."
230 )
231 elif isinstance(lags, int):
AttributeError: 'InputLayer' object has no attribute 'input_shape' 

Mi versión actual de skforecast es la : 0.12.1, y la de tensorflow es la: 2.16.1, intenté bajar las versiones a las 0.12.0 y 2.15.1 respectivamente, y aún así recibo el mismo error.

Me gustaría saber si me pueden ayudar a solucionar el error y poder correr su código, de antemano muchas gracias.

JoaquinAmatRodrigo commented 1 week ago

Hola @Chuello Creo que el link no lo es el correcto.

@FernandoCarazoMelo

Chuello commented 1 week ago

Hola @Chuello Creo que el link no lo es el correcto.

@FernandoCarazoMelo

Buenas tardes Fernando, si tienes razón, ya edité en link, gracias

FernandoCarazoMelo commented 1 week ago

Hola @Chuello ,

No me da ningún error al ejecutarlo con tensorflow 2.15. Qué versión de keras estás utilizando? Puedes imprimir el session info?

Chuello commented 1 week ago

Hola @Chuello ,

No me da ningún error al ejecutarlo con tensorflow 2.15. Qué versión de keras estás utilizando? Puedes imprimir el session info?

Buenas tardes Fernando, si por acá te dejo la salida de session_info:

keras 3.3.3 matplotlib 3.9.0 numpy 1.26.4 pandas 2.2.2 plotly 5.22.0 session_info 1.0.0 skforecast 0.12.0 sklearn 1.4.2 tensorflow 2.16.1

IPython 8.25.0 jupyter_client 8.6.2 jupyter_core 5.7.2

Python 3.11.6 (tags/v3.11.6:8b6ee5b, Oct 2 2023, 14:57:12) [MSC v.1935 64 bit (AMD64)] Windows-10-10.0.22631-SP0

Session information updated at 2024-06-19 16:55 skforecast version: 0.12.0 tensorflow version: 2.16.1

FernandoCarazoMelo commented 1 week ago

Hola @Chuello , En tu mensaje indicabas que intenté bajar las versiones a las 0.12.0 y 2.15.1 respectivamente, y aún así recibo el mismo error pero el session_info que me compartes utiliza tensorflow 2.16.1.

La versión actual de skforecast funciona únicamente con tensorflow<2.16. Prueba con 2.15.

La siguiente versión de skforecast será compatible con tensorflow 2.16. Referencia: PR #727

LuisTellezSirocco commented 1 week ago

Yo he tenido este error y se ha arreglado al bajar la versión a las 2.15.1

pip uninstall tensorflow

pip install tensorflow==2.15.1
FernandoCarazoMelo commented 4 days ago

Gracias, @LuisTellezSirocco. Entiendo que el issue se puede cerrar.