class_docstr: The MLP surrogate predicts a model's performance on a new dataset using an
  MLP.
  
  The MLP converts inputs into feature vectors of the same size and uses
  either ranking or regression to predict metrics.
docstr: Args:
      tracker: A tracker that can be used to impute latency and number of model parameters
          into model performances. Also, it is required for some input features.
      objective: The optimization objective for the XGBoost estimators.
      discount: The discount to apply for the ranking loss. If provided, it focuses on
          correctly predicting the top values.
      hidden_layer_sizes: The dimensions of the hidden layers. Defaults to no hidden layers,
          i.e. a linear predictor.
      weight_decay: The weight decay to apply during optimization.
      dropout: The dropout probability of dropout layers applied after every activation
          function.
      use_simple_dataset_features: Whether to use dataset features to predict using a
          weighted average.
      use_seasonal_naive_performance: Whether to use the Seasonal Naïve nCRPS as dataset
          featuers. Requires the cacher to be set.
      use_catch22_features: Whether to use catch22 features for datasets statistics. Ignored
          if `use_dataset_features` is not set.
      predict: The metrics to predict. All if not provided.
      output_normalization: The type of normalization to apply to the features of each
          dataset independently. `None` applies no normalization, "quantile" applies quantile
          normalization, and "standard" transforms data to have zero mean and unit variance.
      impute_simulatable: Whether the tracker should impute latency and number of model
          parameters into the returned performance object.
docstr_tok: ["Args",":","tracker",":","A","tracker","that","can","be","used","to","impute","latency","and","number","of","model","parameters","into","model","performances",".","Also",",","it","is","required","for","some","input","features",".","objective",":","The","optimization","objective","for","the","XGBoost","estimators",".","discount",":","The","discount","to","apply","for","the","ranking","loss",".","If","provided",",","it","focuses","on","correctly","predicting","the","top","values",".","hidden_layer_sizes",":","The","dimensions","of","the","hidden","layers",".","Defaults","to","no","hidden","layers",",","i.e",".","a","linear","predictor",".","weight_decay",":","The","weight","decay","to","apply","during","optimization",".","dropout",":","The","dropout","probability","of","dropout","layers","applied","after","every","activation","function",".","use_simple_dataset_features",":","Whether","to","use","dataset","features","to","predict","using","a","weighted","average",".","use_seasonal_naive_performance",":","Whether","to","use","the","Seasonal","Na\u00efve","nCRPS","as","dataset","featuers",".","Requires","the","cacher","to","be","set",".","use_catch22_features",":","Whether","to","use","catch22","features","for","datasets","statistics",".","Ignored","if","`","use_dataset_features","`","is","not","set",".","predict",":","The","metrics","to","predict",".","All","if","not","provided",".","output_normalization",":","The","type","of","normalization","to","apply","to","the","features","of","each","dataset","independently",".","`","None","`","applies","no","normalization",",","``","quantile","''","applies","quantile","normalization",",","and","``","standard","''","transforms","data","to","have","zero","mean","and","unit","variance",".","impute_simulatable",":","Whether","the","tracker","should","impute","latency","and","number","of","model","parameters","into","the","returned","performance","object","."]
code: def __init__(
      self,
      tracker: ModelTracker,
      objective: Literal["regression", "ranking"] = "regression",
      discount: Optional[
          Literal["logarithmic", "linear", "quadratic"]
      ] = None,
      hidden_layer_sizes: Optional[List[int]] = None,
      weight_decay: float = 0.0,
      dropout: float = 0.0,
      use_simple_dataset_features: bool = False,
      use_seasonal_naive_performance: bool = False,
      use_catch22_features: bool = False,
      predict: Optional[List[str]] = None,
      output_normalization: OutputNormalization = None,
      impute_simulatable: bool = False,
  ):
      """
      Args:
          tracker: A tracker that can be used to impute latency and number of model parameters
              into model performances. Also, it is required for some input features.
          objective: The optimization objective for the XGBoost estimators.
          discount: The discount to apply for the ranking loss. If provided, it focuses on
              correctly predicting the top values.
          hidden_layer_sizes: The dimensions of the hidden layers. Defaults to no hidden layers,
              i.e. a linear predictor.
          weight_decay: The weight decay to apply during optimization.
          dropout: The dropout probability of dropout layers applied after every activation
              function.
          use_simple_dataset_features: Whether to use dataset features to predict using a
              weighted average.
          use_seasonal_naive_performance: Whether to use the Seasonal Naïve nCRPS as dataset
              featuers. Requires the cacher to be set.
          use_catch22_features: Whether to use catch22 features for datasets statistics. Ignored
              if `use_dataset_features` is not set.
          predict: The metrics to predict. All if not provided.
          output_normalization: The type of normalization to apply to the features of each
              dataset independently. `None` applies no normalization, "quantile" applies quantile
              normalization, and "standard" transforms data to have zero mean and unit variance.
          impute_simulatable: Whether the tracker should impute latency and number of model
              parameters into the returned performance object.
      """
      super().__init__(
          tracker, predict, output_normalization, impute_simulatable
      )
  
      self.use_ranking = objective == "ranking"
      self.hidden_layer_sizes = hidden_layer_sizes or []
      self.weight_decay = weight_decay
      self.dropout = dropout
  
      self.config_transformer = ConfigTransformer(
          add_model_features=True,
          add_dataset_statistics=use_simple_dataset_features,
          add_seasonal_naive_performance=use_seasonal_naive_performance,
          add_catch22_features=use_catch22_features,
          tracker=tracker,
      )
  
      if objective == "regression":
          self.loss = nn.MSELoss()
      elif objective == "ranking":
          self.loss = ListMLELoss(discount=discount)
  
imports: from typing import cast, List, Literal, Optional
  import numpy
  import numpy.typing
  import pytorch_lightning
  import torch
  from lightkit.data import DataLoader
  from torch import nn
  from torch.utils.data import TensorDataset
  from tsbench.config import Config, ModelConfig
  from tsbench.evaluations.tracking import ModelTracker
  from ._base import DatasetFeaturesMixin, OutputNormalization, Surrogate
  from ._factory import register_surrogate
  from .torch import ListMLELoss, MLPLightningModule
  from .transformers import ConfigTransformer
label_desc: Use image node_id 1 to create a new MLPSurrogate object from inherited base classes: Surrogate, DatasetFeaturesMixin with example: obj = MLPSurrogate(tracker, objective, discount, hidden_layer_sizes, weight_decay, dropout, use_simple_dataset_features, use_seasonal_naive_performance, use_catch22_features, predict, output_normalization, impute_simulatable)