class_docstr: A wrapper for the temporal-block layer to replicate it
  
  Arguments
  ---------
  input_shape : tuple
      Expected shape of the input.
  H : int
      The number of intermediate channels.
  P : int
      The kernel size in the convolutions.
  R : int
      The number of times to replicate the multilayer Temporal Blocks.
  X : int
      The number of layers of Temporal Blocks with different dilations.
  norm type : str
      The type of normalization, in ['gLN', 'cLN'].
  causal : bool
      To use causal or non-causal convolutions, in [True, False].
  
  Example
  -------
  >>> x = torch.randn(14, 100, 10)
  >>> H, P, R, X = 10, 5, 2, 3
  >>> TemporalBlocks = TemporalBlocksSequential(
  ...     x.shape, H, P, R, X, 'gLN', False
  ... )
  >>> y = TemporalBlocks(x)
  >>> y.shape
  torch.Size([14, 100, 10])
code: def __init__(self, input_shape, H, P, R, X, norm_type, causal):
      super().__init__(input_shape=input_shape)
      for r in range(R):
          for x in range(X):
              dilation = 2**x
              self.append(
                  TemporalBlock,
                  out_channels=H,
                  kernel_size=P,
                  stride=1,
                  padding="same",
                  dilation=dilation,
                  norm_type=norm_type,
                  causal=causal,
                  layer_name=f"temporalblock_{r}_{x}",
              )
  
imports: import torch
  import torch.nn
  import speechbrain
  import torch.nn.functional
  from speechbrain.processing.signal_processing import overlap_and_add
label_desc: Use image node_id 1 to create a new TemporalBlocksSequential object from inherited base classes: sb.nnet.containers with example: obj = TemporalBlocksSequential(input_shape, H, P, R, X, norm_type, causal)