class_docstr: single depth-wise separable TCN block as used in iNeuBe TCN.
  
  Args:
      in_chan: number of input feature channels.
      out_chan: number of output feature channels.
      ksz: kernel size.
      stride: stride in depth-wise convolution.
      dilation: dilation in depth-wise convolution.
      activation: activation function to use in the whole iNeuBe model,
          you can use any torch supported activation e.g. 'relu' or 'elu'.
code: def __init__(
      self,
      in_chan,
      out_chan,
      ksz=3,
      stride=1,
      dilation=1,
      activation=torch.nn.ELU,
  ):
      super(TCNResBlock, self).__init__()
      padding = dilation
      dconv = torch.nn.Conv1d(
          in_chan,
          in_chan,
          ksz,
          stride,
          padding=padding,
          dilation=dilation,
          padding_mode="reflect",
          groups=in_chan,
      )
      point_conv = torch.nn.Conv1d(in_chan, out_chan, 1)
  
      self.layer = torch.nn.Sequential(
          torch.nn.GroupNorm(in_chan, in_chan, eps=1e-8),
          get_layer(activation)(),
          dconv,
          point_conv,
      )
  
imports: import torch
  from packaging.version import parse
  from torch_complex.tensor import ComplexTensor
  from espnet2.torch_utils.get_layer_from_string import get_layer
label_desc: Use image node_id 1 to create a new TCNResBlock object from inherited base classes: torch.nn with example: obj = TCNResBlock(in_chan, out_chan, ksz, stride, dilation, activation)