class_docstr: An estimator training the d-linear model form the paper
  https://arxiv.org/pdf/2205.13504.pdf extended for probabilistic forecasting.
  
  This class is uses the model defined in ``DLinearModel``,
  and wraps it into a ``DLinearLightningModule`` 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``).
  hidden_dimension
      Size of representation.
  lr
      Learning rate (default: ``1e-3``).
  weight_decay
      Weight decay regularization parameter (default: ``1e-8``).
  
  distr_output
      Distribution to use to evaluate observations and sample predictions
      (default: StudentTOutput()).
  kernel_size
  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.
code: def __init__(
      self,
      prediction_length: int,
      context_length: Optional[int] = None,
      hidden_dimension: Optional[int] = None,
      lr: float = 1e-3,
      weight_decay: float = 1e-8,
      scaling: Optional[str] = "mean",
      distr_output: Output = StudentTOutput(),
      kernel_size: int = 25,
      batch_size: int = 32,
      num_batches_per_epoch: int = 50,
      trainer_kwargs: Optional[Dict[str, Any]] = None,
      train_sampler: Optional[InstanceSampler] = None,
      validation_sampler: Optional[InstanceSampler] = None,
  ) -> None:
      default_trainer_kwargs = {
          "max_epochs": 100,
          "gradient_clip_val": 10.0,
      }
      if trainer_kwargs is not None:
          default_trainer_kwargs.update(trainer_kwargs)
      super().__init__(trainer_kwargs=default_trainer_kwargs)
  
      self.prediction_length = prediction_length
      self.context_length = context_length or 10 * prediction_length
      # TODO find way to enforce same defaults to network and estimator
      # somehow
      self.hidden_dimension = hidden_dimension or 20
      self.lr = lr
      self.weight_decay = weight_decay
      self.distr_output = distr_output
      self.scaling = scaling
      self.kernel_size = kernel_size
      self.batch_size = batch_size
      self.num_batches_per_epoch = num_batches_per_epoch
  
      self.train_sampler = train_sampler or ExpectedNumInstanceSampler(
          num_instances=1.0, min_future=prediction_length
      )
      self.validation_sampler = (
          validation_sampler
          or ValidationSplitSampler(min_future=prediction_length)
      )
  
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 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 DLinearLightningModule
label_desc: Use image node_id 1 to create a new DLinearEstimator object from inherited base classes: PyTorchLightningEstimator with example: obj = DLinearEstimator(prediction_length, context_length, hidden_dimension, lr, weight_decay, scaling, distr_output, kernel_size, batch_size, num_batches_per_epoch, trainer_kwargs, train_sampler, validation_sampler)