code: def __init__(
      self,
      d_hidden: int,
      n_vars: int,
      dropout: float = 0.0,
      add_static: bool = False,
  ):
      super().__init__()
      self.weight_network = GatedResidualNetwork(
          d_hidden=d_hidden,
          d_input=d_hidden * n_vars,
          d_output=n_vars,
          d_static=d_hidden if add_static else None,
          dropout=dropout,
      )
  
      self.variable_network = nn.ModuleList(
          [
              GatedResidualNetwork(d_hidden=d_hidden, dropout=dropout)
              for _ in range(n_vars)
          ]
      )
  
imports: from typing import List, Optional, Tuple
  import numpy
  import torch
  import torch.nn
  from pts.modules import FeatureEmbedder
label_desc: Use image node_id 1 to create a new VariableSelectionNetwork object from inherited base classes: nn with example: obj = VariableSelectionNetwork(d_hidden, n_vars, dropout, add_static)