Source code for pytorch_forecasting.models.timexer._timexer_pkg

"""TimeXer package container."""

from pytorch_forecasting.models.base._base_object import _BasePtForecaster


[docs] class TimeXer_pkg(_BasePtForecaster): """TimeXer package container.""" _tags = { "info:name": "TimeXer", "info:compute": 3, "info:pred_type": ["point", "quantile"], "info:y_type": ["numeric"], "authors": ["PranavBhatP"], "capability:exogenous": True, "capability:multivariate": True, "capability:pred_int": True, "capability:flexible_history_length": True, "capability:cold_start": False, }
[docs] @classmethod def get_cls(cls): """Get model class.""" from pytorch_forecasting.models import TimeXer return TimeXer
[docs] @classmethod def get_base_test_params(cls): """ Return testing parameter settings for the trainer. Returns ------- params : dict or list of dict, default = {} Parameters to create testing instances of the class """ from pytorch_forecasting.data.encoders import GroupNormalizer return [ { # Basic test params "hidden_size": 16, "patch_length": 1, "n_heads": 2, "e_layers": 1, "d_ff": 32, "dropout": 0.1, }, { "hidden_size": 32, "n_heads": 4, "e_layers": 2, "d_ff": 64, "patch_length": 4, "dropout": 0.2, "activation": "gelu", }, { "hidden_size": 16, "n_heads": 2, "e_layers": 1, "d_ff": 32, "patch_length": 2, "dropout": 0.1, }, { "hidden_size": 24, "n_heads": 3, "e_layers": 1, "d_ff": 48, "patch_length": 3, "dropout": 0.15, "data_loader_kwargs": dict( target_normalizer=GroupNormalizer( groups=["agency", "sku"], transformation="softplus" ), ), }, { "hidden_size": 32, "patch_length": 1, "n_heads": 4, "e_layers": 1, "d_ff": 32, "dropout": 0.1, "use_efficient_attention": True, }, ]
@classmethod def _get_test_dataloaders_from(cls, params): """ Get dataloaders from parameters. Parameters ---------- params: dict Parameters to create dataloaders. One of the elements in the list returned by ``get_test_train_params``. Returns ------- dataloaders: Dict[str, DataLoader] Dict of dataloaders created from the parameters. Train, validation, and test dataloaders created from the parameters. """ loss = params.get("loss", None) data_loader_kwargs = params.get("data_loader_kwargs", {}) from pytorch_forecasting.metrics import ( NegativeBinomialDistributionLoss, PoissonLoss, TweedieLoss, ) from pytorch_forecasting.tests._conftest import make_dataloaders from pytorch_forecasting.tests._data_scenarios import data_with_covariates dwc = data_with_covariates() if isinstance(loss, NegativeBinomialDistributionLoss): dwc = dwc.assign(volume=lambda x: x.volume.round()) dwc = dwc.copy() if isinstance(loss, TweedieLoss | PoissonLoss): dwc["target"] = dwc["volume"].clip(1e-3, 1.0) else: dwc["target"] = dwc["volume"] data_loader_default_kwargs = dict( target="target", time_varying_known_reals=["price_actual"], time_varying_unknown_reals=["target"], static_categoricals=["agency"], add_relative_time_idx=True, ) data_loader_default_kwargs.update(data_loader_kwargs) dataloaders_w_covariates = make_dataloaders(dwc, **data_loader_default_kwargs) return dataloaders_w_covariates