code: def __init__(
      self,
      input_size: int,
      freq: str,
      prediction_length: int,
      target_dim: int,
      trainer: Trainer = Trainer(),
      context_length: Optional[int] = None,
      num_layers: int = 2,
      num_cells: int = 40,
      cell_type: str = "LSTM",
      num_parallel_samples: int = 100,
      dropout_rate: float = 0.1,
      cardinality: List[int] = [1],
      embedding_dimension: int = 5,
      conditioning_length: int = 100,
      diff_steps: int = 100,
      loss_type: str = "l2",
      beta_end=0.1,
      beta_schedule="linear",
      residual_layers=8,
      residual_channels=8,
      dilation_cycle_length=2,
      scaling: bool = True,
      pick_incomplete: bool = False,
      lags_seq: Optional[List[int]] = None,
      time_features: Optional[List[TimeFeature]] = None,
      **kwargs,
  ) -> None:
      super().__init__(trainer=trainer, **kwargs)
  
      self.freq = freq
      self.context_length = (
          context_length
          if context_length is not None
          else prediction_length
      )
  
      self.input_size = input_size
      self.prediction_length = prediction_length
      self.target_dim = target_dim
      self.num_layers = num_layers
      self.num_cells = num_cells
      self.cell_type = cell_type
      self.num_parallel_samples = num_parallel_samples
      self.dropout_rate = dropout_rate
      self.cardinality = cardinality
      self.embedding_dimension = embedding_dimension
  
      self.conditioning_length = conditioning_length
      self.diff_steps = diff_steps
      self.loss_type = loss_type
      self.beta_end = beta_end
      self.beta_schedule = beta_schedule
      self.residual_layers = residual_layers
      self.residual_channels = residual_channels
      self.dilation_cycle_length = dilation_cycle_length
  
      self.lags_seq = (
          lags_seq
          if lags_seq is not None
          else lags_for_fourier_time_features_from_frequency(
              freq_str=freq
          )
      )
  
      self.time_features = (
          time_features
          if time_features is not None
          else fourier_time_features_from_frequency(self.freq)
      )
  
      self.history_length = self.context_length + max(self.lags_seq)
      self.pick_incomplete = pick_incomplete
      self.scaling = scaling
  
      self.train_sampler = ExpectedNumInstanceSampler(
          num_instances=1.0,
          min_past=0 if pick_incomplete else self.history_length,
          min_future=prediction_length,
      )
  
      self.validation_sampler = ValidationSplitSampler(
          min_past=0 if pick_incomplete else self.history_length,
          min_future=prediction_length,
      )
  
file_path: gluonts/src/gluonts/nursery/robust-mts-attack/pts/model/time_grad/time_grad_estimator.py
imports: from typing import List, Optional
  import torch
  from gluonts.dataset.field_names import FieldName
  from gluonts.time_feature import TimeFeature
  from gluonts.torch.model.predictor import PyTorchPredictor
  from gluonts.torch.util import copy_parameters
  from gluonts.model.predictor import Predictor
  from gluonts.transform import Transformation, Chain, InstanceSplitter, ExpectedNumInstanceSampler, ValidationSplitSampler, TestSplitSampler, RenameFields, AsNumpyArray, ExpandDimArray, AddObservedValuesIndicator, AddTimeFeatures, VstackFeatures, SetFieldIfNotPresent, TargetDimIndicator
  from pts import Trainer
  from pts.feature import fourier_time_features_from_frequency, lags_for_fourier_time_features_from_frequency
  from pts.model import PyTorchEstimator
  from pts.model.utils import get_module_forward_input_names
  from .time_grad_network import TimeGradTrainingNetwork, TimeGradPredictionNetwork
label_desc: Use image node_id 1 to create a new TimeGradEstimator object from inherited base classes: PyTorchEstimator with example: obj = TimeGradEstimator(input_size, freq, prediction_length, target_dim, trainer, context_length, num_layers, num_cells, cell_type, num_parallel_samples, dropout_rate, cardinality, embedding_dimension, conditioning_length, diff_steps, loss_type, beta_end, beta_schedule, residual_layers, residual_channels, dilation_cycle_length, scaling, pick_incomplete, lags_seq, time_features)