class_docstr: Separable Bottleneck block: a sequence of spatiotemporal Convolution, Normalization,
  and Activations repeated in the following order. Requires a tuple of models to be
  provided to conv_b, norm_b, act_b to perform Convolution, Normalization, and
  Activations in parallel Separably.
  
  ::
  
  
                                  Conv3d (conv_a)
                                         ↓
                               Normalization (norm_a)
                                         ↓
                                 Activation (act_a)
                                         ↓
                               Conv3d(s) (conv_b), ...
                                       ↓ (↓)
                            Normalization(s) (norm_b), ...
                                       ↓ (↓)
                               Activation(s) (act_b), ...
                                       ↓ (↓)
                                Reduce (sum or cat)
                                         ↓
                                  Conv3d (conv_c)
                                         ↓
                               Normalization (norm_c)
docstr: Args:
      conv_a (torch.nn.modules): convolutional module.
      norm_a (torch.nn.modules): normalization module.
      act_a (torch.nn.modules): activation module.
      conv_b (torch.nn.modules_list): convolutional module(s).
      norm_b (torch.nn.modules_list): normalization module(s).
      act_b (torch.nn.modules_list): activation module(s).
      conv_c (torch.nn.modules): convolutional module.
      norm_c (torch.nn.modules): normalization module.
      reduce_method (str): if multiple conv_b is used, reduce the output with
          `sum`, or `cat`.
docstr_tok: ["Args",":","conv_a","(","torch.nn.modules",")",":","convolutional","module",".","norm_a","(","torch.nn.modules",")",":","normalization","module",".","act_a","(","torch.nn.modules",")",":","activation","module",".","conv_b","(","torch.nn.modules_list",")",":","convolutional","module","(","s",")",".","norm_b","(","torch.nn.modules_list",")",":","normalization","module","(","s",")",".","act_b","(","torch.nn.modules_list",")",":","activation","module","(","s",")",".","conv_c","(","torch.nn.modules",")",":","convolutional","module",".","norm_c","(","torch.nn.modules",")",":","normalization","module",".","reduce_method","(","str",")",":","if","multiple","conv_b","is","used",",","reduce","the","output","with","`","sum","`",",","or","`","cat","`","."]
code: def __init__(
      self,
      *,
      conv_a: nn.Module,
      norm_a: nn.Module,
      act_a: nn.Module,
      conv_b: nn.ModuleList,
      norm_b: nn.ModuleList,
      act_b: nn.ModuleList,
      conv_c: nn.Module,
      norm_c: nn.Module,
      reduce_method: str = "sum",
  ) -> None:
      """
      Args:
          conv_a (torch.nn.modules): convolutional module.
          norm_a (torch.nn.modules): normalization module.
          act_a (torch.nn.modules): activation module.
          conv_b (torch.nn.modules_list): convolutional module(s).
          norm_b (torch.nn.modules_list): normalization module(s).
          act_b (torch.nn.modules_list): activation module(s).
          conv_c (torch.nn.modules): convolutional module.
          norm_c (torch.nn.modules): normalization module.
          reduce_method (str): if multiple conv_b is used, reduce the output with
              `sum`, or `cat`.
      """
      super().__init__()
      set_attributes(self, locals())
      assert all(
          op is not None for op in (self.conv_b, self.conv_c)
      ), f"{self.conv_a}, {self.conv_b}, {self.conv_c} has None"
      assert reduce_method in ["sum", "cat"]
      if self.norm_c is not None:
          # This flag is used for weight initialization.
          self.norm_c.block_final_bn = True
  
imports: from typing import Callable, List, Tuple, Union
  import numpy
  import torch
  import torch.nn
  from pytorchvideo.layers.utils import set_attributes
  from pytorchvideo.models.head import create_res_basic_head, create_res_roi_pooling_head
  from pytorchvideo.models.net import DetectionBBoxNetwork, Net
  from pytorchvideo.models.stem import create_acoustic_res_basic_stem, create_res_basic_stem
label_desc: Use image node_id 1 to create a new SeparableBottleneckBlock object from inherited base classes: nn with example: obj = SeparableBottleneckBlock()