class_docstr: Gated Linear Unit
code: def __init__(
      self,
      input_size: int,
      hidden_size: int = None,
      dropout: float = None,
  ):
      super().__init__()
  
      if dropout is not None:
          self.dropout = MonteCarloDropout(dropout)
      else:
          self.dropout = dropout
      self.hidden_size = hidden_size or input_size
      self.fc = nn.Linear(input_size, self.hidden_size * 2)
  
      self.init_weights()
  
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 _GatedLinearUnit object from inherited base classes: nn with example: obj = _GatedLinearUnit(input_size, hidden_size, dropout)