class_docstr: Gated convolutional block as in https://arxiv.org/pdf/1612.08083.pdf
  Args:
      in_out_channels (int): number of input/output channels.
      kernel_size (int): convolution kernel size.
      dropout_p (float): dropout rate.
class_docstr_tok: ["Gated","convolutional","block","as","in","https",":","\/\/arxiv.org\/pdf\/1612.08083.pdf","Args",":","in_out_channels","(","int",")",":","number","of","input\/output","channels",".","kernel_size","(","int",")",":","convolution","kernel","size",".","dropout_p","(","float",")",":","dropout","rate","."]
code: def __init__(
      self, in_out_channels, kernel_size, dropout_p, num_layers
  ):
      super().__init__()
      # class arguments
      self.dropout_p = dropout_p
      self.num_layers = num_layers
      # define layers
      self.conv_layers = nn.ModuleList()
      self.norm_layers = nn.ModuleList()
      self.layers = nn.ModuleList()
      for _ in range(num_layers):
          self.conv_layers += [
              nn.Conv1d(
                  in_out_channels,
                  2 * in_out_channels,
                  kernel_size,
                  padding=kernel_size // 2,
              )
          ]
          self.norm_layers += [LayerNorm(2 * in_out_channels)]
  
imports: from torch import nn
  from .normalization import LayerNorm
label_desc: Use image node_id 1 to create a new GatedConvBlock object from inherited base classes: nn with example: obj = GatedConvBlock(in_out_channels, kernel_size, dropout_p, num_layers)