class_docstr: Time depth separable convolution as in https://arxiv.org/pdf/1904.02619.pdf
  It shows competative results with less computation and memory footprint.
code: def __init__(
      self,
      in_channels,
      hid_channels,
      out_channels,
      kernel_size,
      bias=True,
  ):
      super().__init__()
  
      self.in_channels = in_channels
      self.out_channels = out_channels
      self.hid_channels = hid_channels
      self.kernel_size = kernel_size
  
      self.time_conv = nn.Conv1d(
          in_channels,
          2 * hid_channels,
          kernel_size=1,
          stride=1,
          padding=0,
          bias=bias,
      )
      self.norm1 = nn.BatchNorm1d(2 * hid_channels)
      self.depth_conv = nn.Conv1d(
          hid_channels,
          hid_channels,
          kernel_size,
          stride=1,
          padding=(kernel_size - 1) // 2,
          groups=hid_channels,
          bias=bias,
      )
      self.norm2 = nn.BatchNorm1d(hid_channels)
      self.time_conv2 = nn.Conv1d(
          hid_channels,
          out_channels,
          kernel_size=1,
          stride=1,
          padding=0,
          bias=bias,
      )
      self.norm3 = nn.BatchNorm1d(out_channels)
  
file_path: TTS/TTS/tts/layers/generic/time_depth_sep_conv.py
imports: import torch
  from torch import nn
label_desc: Use image node_id 1 to create a new TimeDepthSeparableConv object from inherited base classes: nn with example: obj = TimeDepthSeparableConv(in_channels, hid_channels, out_channels, kernel_size, bias)