class_docstr: Computational module that computes several `blocks` independently from each other and aggregates the outputs.
  It expects audio inputs to be passed together with lengths, just like Jasper blocks, and all outputs to have
  the same dimensions but it does not impose any additional requirements on the structure of the blocks themselves.
  
  Args:
      blocks: List of Jasper blocks that will be computed concurently. It is expected that they accept the same
          input and return outputs with the same number of channels.
      aggregation_mode: an optional string, indicating how the outputs will be aggregated. Supported values are
          ['sum', 'dropout']. "sum" value forces outputs to be summed together. "dropout" value enables tower
          dropout training with different blocks being dropped out during training.
      block_dropout_prob: a probability of dropping any individual block during training with "dropout" aggregation
          mode. Acts as a regularization technique.
      residual_mode: an optional string indicating how residuals will be applied. Supported values are
          ['sum', 'conv']. In 'sum' mode input features are summed together with the output. This will fail if the
          number of channels in the input is different from the number of channels in an output tensor. In 'conv' mode
          inputs are passed through pointwise convolution to make input channel dimension match output channel
          dimension. In this mode `in_filters` and `out_filters` params are required.
      in_filters: number of filters (channels) in the input tensor of each block.
      out_filters: number of filters (channels) in the output tensor of each block.
class_docstr_tok: ["Computational","module","that","computes","several","`","blocks","`","independently","from","each","other","and","aggregates","the","outputs",".","It","expects","audio","inputs","to","be","passed","together","with","lengths",",","just","like","Jasper","blocks",",","and","all","outputs","to","have","the","same","dimensions","but","it","does","not","impose","any","additional","requirements","on","the","structure","of","the","blocks","themselves",".","Args",":","blocks",":","List","of","Jasper","blocks","that","will","be","computed","concurently",".","It","is","expected","that","they","accept","the","same","input","and","return","outputs","with","the","same","number","of","channels",".","aggregation_mode",":","an","optional","string",",","indicating","how","the","outputs","will","be","aggregated",".","Supported","values","are","[","'sum","'",",","'dropout","'","]",".","``","sum","''","value","forces","outputs","to","be","summed","together",".","``","dropout","''","value","enables","tower","dropout","training","with","different","blocks","being","dropped","out","during","training",".","block_dropout_prob",":","a","probability","of","dropping","any","individual","block","during","training","with","``","dropout","''","aggregation","mode",".","Acts","as","a","regularization","technique",".","residual_mode",":","an","optional","string","indicating","how","residuals","will","be","applied",".","Supported","values","are","[","'sum","'",",","'conv","'","]",".","In","'sum","'","mode","input","features","are","summed","together","with","the","output",".","This","will","fail","if","the","number","of","channels","in","the","input","is","different","from","the","number","of","channels","in","an","output","tensor",".","In","'conv","'","mode","inputs","are","passed","through","pointwise","convolution","to","make","input","channel","dimension","match","output","channel","dimension",".","In","this","mode","`","in_filters","`","and","`","out_filters","`","params","are","required",".","in_filters",":","number","of","filters","(","channels",")","in","the","input","tensor","of","each","block",".","out_filters",":","number","of","filters","(","channels",")","in","the","output","tensor","of","each","block","."]
docstr: Forward pass computing aggregated output.
  
  Args:
      x: tuple of padded signal and lengths the signal. The shape of the signal is [B, D, T]. The lengths are
          1D torch tensor of length B.
  
  Returns:
     torch tensor after passing input throught each block and aggregating these outputs according to the
     aggregation mode.
code: def forward(self, x: Tuple[List[Tensor], Optional[Tensor]]):
      """
      Forward pass computing aggregated output.
  
      Args:
          x: tuple of padded signal and lengths the signal. The shape of the signal is [B, D, T]. The lengths are
              1D torch tensor of length B.
  
      Returns:
         torch tensor after passing input throught each block and aggregating these outputs according to the
         aggregation mode.
      """
      if len(self.blocks) == 1:
          return self.blocks[0](x)
  
      result = None
      max_mask = None
  
      scaling_weights = None
      if self.aggregation_mode == "dropout":
          scaling_weights = self.get_dropout_mask()
  
      for i, block in enumerate(self.blocks):
          output, mask = block(x)
  
          weighted_output = output[-1]
          if self.aggregation_mode == "dropout":
              weighted_output = scaling_weights[i] * output[-1]
  
          if result is None:
              result = weighted_output
          else:
              result = result + weighted_output
  
          if max_mask is None:
              max_mask = mask
          else:
              max_mask = torch.max(
                  torch.stack([mask, max_mask]), dim=0
              )[0]
      input_feat = x[0][-1]
      lens = x[1]
      if self.residual_mode == "sum":
          result = result + input_feat
      elif self.residual_mode == "conv":
          result = result + self.res_conv(input_feat, lens)[0]
      return [result], max_mask
  
imports: import math
  from typing import Callable, Iterable, List, Optional, Tuple
  import torch
  import torch.nn
  import torch.nn.functional
  from torch import Tensor
  from torch.nn.init import _calculate_correct_fan
  from torch.nn.modules.utils import _single
  from nemo.collections.common.parts.utils import activation_registry
  from nemo.core.classes.mixins import AccessMixin
  from nemo.core.classes.mixins.adapter_mixins import AdapterModuleMixin
  from nemo.utils import logging
label_desc: Use image node_id 3 for calling the ParallelBlock obj's underlying member method code with example usage: obj.forward(x) and returns: list,  max_mask, self