class_docstr: *Dual-path recurrent neural networks (DPRNN)* :cite:`luo2020dual`.
  
  Args:
      feat_dim (int, optional): The feature dimension after Encoder module. (Default: 64)
      hidden_dim (int, optional): Hidden dimension in the RNN layer of DPRNN. (Default: 128)
      num_blocks (int, optional): Number of DPRNN layers. (Default: 6)
      rnn_type (str, optional): Type of RNN in DPRNN. Valid options are ["RNN", "LSTM", "GRU"]. (Default: "LSTM")
      d_model (int, optional): The number of expected features in the input. (Default: 256)
      chunk_size (int, optional): Chunk size of input for DPRNN. (Default: 100)
      chunk_stride (int, optional): Stride of chunk input for DPRNN. (Default: 50)
code: def chunking(self, x: torch.Tensor) -> Tuple[torch.Tensor, int]:
      out, rest = self.pad_chunk(x)
      batch_size, feat_dim, seq_len = out.shape
  
      segments1 = (
          out[:, :, : -self.chunk_stride]
          .contiguous()
          .view(batch_size, feat_dim, -1, self.chunk_size)
      )
      segments2 = (
          out[:, :, self.chunk_stride :]
          .contiguous()
          .view(batch_size, feat_dim, -1, self.chunk_size)
      )
      out = torch.cat([segments1, segments2], dim=3)
      out = (
          out.view(batch_size, feat_dim, -1, self.chunk_size)
          .transpose(2, 3)
          .contiguous()
      )
  
      return out, rest
  
imports: import math
  from typing import List, Optional, Tuple
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 3 for calling the DPRNN obj's underlying member method code with example usage: obj.chunking(x) and returns: out,  rest