class_docstr: Dialted and Depth-Separable Convolution
class_docstr_tok: ["Dialted","and","Depth-Separable","Convolution"]
code: def forward(self, x, x_mask, g=None):
      if g is not None:
          x = x + g
      for i in range(self.n_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.drop(y)
          x = x + y
      return x * x_mask
  
imports: import torch
  from torch import nn
  from torch.nn import Conv1d
  from torch.nn import functional
  from torch.nn.utils.parametrizations import weight_norm
  from torch.nn.utils.parametrize import remove_parametrizations
  import TTS.vc.modules.freevc.commons
  from TTS.vc.modules.freevc.commons import get_padding, init_weights
label_desc: Use image node_id 2 for calling the DDSConv obj's underlying member method code with example usage: obj.forward(x, x_mask, g) and returns: unknown