class_docstr: Residual block module in WaveNet.
class_docstr_tok: ["Residual","block","module","in","WaveNet","."]
docstr: x: B x D_res x T
  c: B x D_aux x T
docstr_tok: ["x",":","B","x","D_res","x","T","c",":","B","x","D_aux","x","T"]
code: def forward(self, x, c):
      """
      x: B x D_res x T
      c: B x D_aux x T
      """
      residual = x
      x = F.dropout(x, p=self.dropout, training=self.training)
      x = self.conv(x)
  
      # remove future time steps if use_causal_conv conv
      x = x[:, :, : residual.size(-1)] if self.use_causal_conv else x
  
      # split into two part for gated activation
      splitdim = 1
      xa, xb = x.split(x.size(splitdim) // 2, dim=splitdim)
  
      # local conditioning
      if c is not None:
          assert self.conv1x1_aux is not None
          c = self.conv1x1_aux(c)
          ca, cb = c.split(c.size(splitdim) // 2, dim=splitdim)
          xa, xb = xa + ca, xb + cb
  
      x = torch.tanh(xa) * torch.sigmoid(xb)
  
      # for skip connection
      s = self.conv1x1_skip(x)
  
      # for residual connection
      x = (self.conv1x1_out(x) + residual) * (0.5**2)
  
      return x, s
  
imports: import torch
  from torch.nn import functional
label_desc: Use image node_id 2 for calling the ResidualBlock obj's underlying member method code with example usage: obj.forward(x, c) and returns: x,  s