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 forward(self, x: torch.Tensor) -> torch.Tensor:
      x, rest = self.chunking(x)
      batch_size, _, dim1, dim2 = x.shape
      out = x
      for row_rnn, row_norm, col_rnn, col_norm in zip(
          self.row_rnn, self.row_norm, self.col_rnn, self.col_norm
      ):
          row_in = (
              out.permute(0, 3, 2, 1)
              .contiguous()
              .view(batch_size * dim2, dim1, -1)
              .contiguous()
          )
          row_out = row_rnn(row_in)
          row_out = (
              row_out.view(batch_size, dim2, dim1, -1)
              .permute(0, 3, 2, 1)
              .contiguous()
          )
          row_out = row_norm(row_out)
          out = out + row_out
  
          col_in = (
              out.permute(0, 2, 3, 1)
              .contiguous()
              .view(batch_size * dim1, dim2, -1)
              .contiguous()
          )
          col_out = col_rnn(col_in)
          col_out = (
              col_out.view(batch_size, dim1, dim2, -1)
              .permute(0, 3, 1, 2)
              .contiguous()
          )
          col_out = col_norm(col_out)
          out = out + col_out
      out = self.conv(out)
      out = self.merging(out, rest)
      out = out.transpose(1, 2).contiguous()
      return out
  
imports: import math
  from typing import List, Optional, Tuple
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 5 for calling the DPRNN obj's underlying member method code with example usage: obj.forward(x) and returns: out