docstr: Shapes:
      - x: :math:`[B, C, T]`
      - x_mask: :math:`[B, 1, T]`
docstr_tok: ["Shapes",":","-","x",":",":","math",":","`","[","B",",","C",",","T","]","`","-","x_mask",":",":","math",":","`","[","B",",","1",",","T","]","`"]
code: def forward(self, x, x_mask, g=None):
      """
      Shapes:
          - x: :math:`[B, C, T]`
          - x_mask: :math:`[B, 1, T]`
      """
      if g is not None:
          x = x + g
      for i in range(self.num_layers):
          y = self.convs_sep[i](x * x_mask)
          y = self.norms_1[i](y)
          y = F.gelu(y)
          y = self.convs_1x1[i](y)
          y = self.norms_2[i](y)
          y = F.gelu(y)
          y = self.dropout(y)
          x = x + y
      return x * x_mask
  
imports: import math
  import torch
  from torch import nn
  from torch.nn import functional
  from TTS.tts.layers.generic.normalization import LayerNorm2
  from TTS.tts.layers.vits.transforms import piecewise_rational_quadratic_transform
label_desc: Use image node_id 2 for calling the DilatedDepthSeparableConv obj's underlying member method code with example usage: obj.forward(x, x_mask, g) and returns: unknown