code: def __init__(
      self,
      input_size: int,
      skip_size: int = None,
      trainable_add: bool = True,
      norm=nn.LayerNorm,
  ):
      super().__init__()
  
      self.input_size = input_size
      self.trainable_add = trainable_add
      self.skip_size = skip_size or input_size
  
      if self.input_size != self.skip_size:
          self.resample = _TimeDistributedInterpolation(
              self.input_size, batch_first=True, trainable=False
          )
  
      if self.trainable_add:
          self.mask = nn.Parameter(
              torch.zeros(self.input_size, dtype=torch.float)
          )
          self.gate = nn.Sigmoid()
      self.norm = norm(self.input_size)
  
imports: from typing import Dict, List, Optional, Tuple, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from darts.logging import get_logger
  from darts.utils.torch import MonteCarloDropout
label_desc: Use image node_id 1 to create a new _AddNorm object from inherited base classes: nn with example: obj = _AddNorm(input_size, skip_size, trainable_add, norm)