code: def forward(self, x, x_mask, g=None, **kwargs):
      output = torch.zeros_like(x)
      n_channels_tensor = torch.IntTensor([self.hidden_channels])
  
      if g is not None:
          g = self.cond_layer(g)
  
      for i in range(self.n_layers):
          x_in = self.in_layers[i](x)
          if g is not None:
              cond_offset = i * 2 * self.hidden_channels
              g_l = g[
                  :,
                  cond_offset : cond_offset + 2 * self.hidden_channels,
                  :,
              ]
          else:
              g_l = torch.zeros_like(x_in)
  
          acts = commons.fused_add_tanh_sigmoid_multiply(
              x_in, g_l, n_channels_tensor
          )
          acts = self.drop(acts)
  
          res_skip_acts = self.res_skip_layers[i](acts)
          if i < self.n_layers - 1:
              res_acts = res_skip_acts[:, : self.hidden_channels, :]
              x = (x + res_acts) * x_mask
              output = (
                  output + res_skip_acts[:, self.hidden_channels :, :]
              )
          else:
              output = output + res_skip_acts
      return output * 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 WN obj's underlying member method code with example usage: obj.forward(x, x_mask, g) and returns: unknown