[Python] Error when going to predict time series forecasting with TFT

Discussão em 'Python' iniciado por Stack, Abril 22, 2025.

  1. Stack

    Stack Membro Participativo

    from pytorch_lightning import LightningModule
    import torch.optim as optim

    # Ensure the TemporalFusionTransformer is wrapped as a LightningModule
    class TFTLightningModule(LightningModule):
    def __init__(self, model):
    super().__init__()
    self.model = model
    self.save_hyperparameters()

    def forward(self, batch):
    # If batch is a tuple (inputs, targets), use only inputs
    if isinstance(batch, tuple):
    batch = batch[0]
    return self.model(batch)

    def training_step(self, batch, batch_idx):
    x, y = batch # unpack if needed
    y_hat = self(x)
    loss = self.model.loss(y_hat, x["decoder_target"])
    self.log("train_loss", loss)
    return loss

    def validation_step(self, batch, batch_idx):
    x, y = batch
    y_hat = self(x)
    loss = self.model.loss(y_hat, x["decoder_target"])
    self.log("val_loss", loss)
    return loss


    def configure_optimizers(self):
    optimizer = optim.Adam(self.parameters(), lr=self.model.hparams.learning_rate)
    return optimizer

    # Wrap the TemporalFusionTransformer
    tft_module = TFTLightningModule(tft)

    trainer = Trainer(
    max_epochs=30,
    accelerator="auto",
    enable_model_summary=True,
    gradient_clip_val=0.1,
    )

    # Train the model
    trainer.fit(tft_module, train_dataloaders=train_dataloader, val_dataloaders=val_dataloader)


    i got below error for above code when using tft

    INFO:pytorch_lightning.callbacks.model_summary: | Name | Type | Params | Mode

    0 | model | TemporalFusionTransformer | 1.4 M | train

    1.4 M Trainable params 0 Non-trainable params 1.4 M Total params 5.613 Total estimated model params size (MB) 470 Modules in train mode 0 Modules in eval mode /usr/local/lib/python3.11/dist-packages/pytorch_lightning/core/saving.py:363: Skipping 'model' parameter because it is not possible to safely dump to YAML. Sanity Checking DataLoader 0:   0% 0/1 [00:00<?, ?it/s]



    TypeError Traceback (most recent call last) in <cell line: 0>() 1 # Train the model ----> 2 trainer.fit(tft_module, train_dataloaders=train_dataloader, val_dataloaders=val_dataloader)

    19 frames /usr/local/lib/python3.11/dist-packages/pytorch_forecasting/utils/_utils.py in getitem(self, k) 390 return getattr(self, k) 391 else: --> 392 return super().getitem(k) 393 394 def get(self, k, default=None):

    TypeError: tuple indices must be integers or slices, not tuple

    I tried many different methods and read many articles and chatgpt's responds. but i was unable to solve that. if you know the reasons let me know

    Thanks

    Continue reading...

Compartilhe esta Página