class_docstr: An estimator training the iTransformer model for multivariate forecasting as described in
  https://arxiv.org/abs/2310.06625 extended to be probabilistic.
  
  This class uses the model defined in ``ITransformerModel``,
  and wraps it into a ``ITransformerLightningModule`` for training
  purposes: training is performed using PyTorch Lightning's ``pl.Trainer``
  class.
  
  Parameters
  ----------
  prediction_length
      Length of the prediction horizon.
  context_length
      Number of time steps prior to prediction time that the model
      takes as inputs (default: ``10 * prediction_length``).
  d_model
      Size of latent in the Transformer encoder.
  nhead
      Number of attention heads in the Transformer encoder which must divide d_model.
  dim_feedforward
      Size of hidden layers in the Transformer encoder.
  dropout
      Dropout probability in the Transformer encoder.
  activation
      Activation function in the Transformer encoder.
  norm_first
      Whether to apply normalization before or after the attention.
  num_encoder_layers
      Number of layers in the Transformer encoder.
  lr
      Learning rate (default: ``1e-3``).
  weight_decay
      Weight decay regularization parameter (default: ``1e-8``).
  scaling
      Scaling parameter can be "mean", "std" or None.
  distr_output
      Distribution to use to evaluate observations and sample predictions
      (default: StudentTOutput()).
  num_parallel_samples
      Number of samples per time series to that the resulting predictor
      should produce (default: 100).
  batch_size
      The size of the batches to be used for training (default: 32).
  num_batches_per_epoch
      Number of batches to be processed in each training epoch
          (default: 50).
  trainer_kwargs
      Additional arguments to provide to ``pl.Trainer`` for construction.
  train_sampler
      Controls the sampling of windows during training.
  validation_sampler
      Controls the sampling of windows during validation.
  nonnegative_pred_samples
      Should final prediction samples be non-negative? If yes, an activation
      function is applied to ensure non-negative. Observe that this is applied
      only to the final samples and this is not applied during training.
code: def create_validation_data_loader(
      self, data: Dataset, module: ITransformerLightningModule, **kwargs
  ) -> Iterable:
      instances = self._create_instance_splitter(
          module, "validation"
      ).apply(data, is_train=True)
      return as_stacked_batches(
          instances,
          batch_size=self.batch_size,
          field_names=TRAINING_INPUT_NAMES,
          output_type=torch.tensor,
      )
  
imports: from typing import Optional, Iterable, Dict, Any
  import torch
  import lightning.pytorch
  from gluonts.core.component import validated
  from gluonts.dataset.common import Dataset
  from gluonts.dataset.field_names import FieldName
  from gluonts.dataset.loader import as_stacked_batches
  from gluonts.itertools import Cyclic
  from gluonts.transform import AsNumpyArray, Transformation, AddObservedValuesIndicator, InstanceSampler, InstanceSplitter, ValidationSplitSampler, TestSplitSampler, ExpectedNumInstanceSampler, SelectFields
  from gluonts.torch.model.estimator import PyTorchLightningEstimator
  from gluonts.torch.model.predictor import PyTorchPredictor
  from gluonts.torch.distributions import Output, StudentTOutput
  from .lightning_module import ITransformerLightningModule
label_desc: Use image node_id 6 for calling the ITransformerEstimator obj's underlying member method code with example usage: obj.create_validation_data_loader(data, module) and returns: as_stacked_batches