class_docstr: Bottleneck block: a sequence of spatiotemporal Convolution, Normalization,
  and Activations repeated in the following order:
  
  ::
  
  
                                  Conv3d (conv_a)
                                         ↓
                               Normalization (norm_a)
                                         ↓
                                 Activation (act_a)
                                         ↓
                                  Conv3d (conv_b)
                                         ↓
                               Normalization (norm_b)
                                         ↓
                                 Activation (act_b)
                                         ↓
                                  Conv3d (conv_c)
                                         ↓
                               Normalization (norm_c)
  
  The builder can be found in `create_bottleneck_block`.
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): convolutional module.
      norm_b (torch.nn.modules): normalization module.
      act_b (torch.nn.modules): activation module.
      conv_c (torch.nn.modules): convolutional module.
      norm_c (torch.nn.modules): normalization module.
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",")",":","convolutional","module",".","norm_b","(","torch.nn.modules",")",":","normalization","module",".","act_b","(","torch.nn.modules",")",":","activation","module",".","conv_c","(","torch.nn.modules",")",":","convolutional","module",".","norm_c","(","torch.nn.modules",")",":","normalization","module","."]
code: def __init__(
      self,
      *,
      conv_a: nn.Module = None,
      norm_a: nn.Module = None,
      act_a: nn.Module = None,
      conv_b: nn.Module = None,
      norm_b: nn.Module = None,
      act_b: nn.Module = None,
      conv_c: nn.Module = None,
      norm_c: nn.Module = None,
  ) -> 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): convolutional module.
          norm_b (torch.nn.modules): normalization module.
          act_b (torch.nn.modules): activation module.
          conv_c (torch.nn.modules): convolutional module.
          norm_c (torch.nn.modules): normalization module.
      """
      super().__init__()
      set_attributes(self, locals())
      assert all(
          op is not None
          for op in (self.conv_a, self.conv_b, self.conv_c)
      )
      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 BottleneckBlock object from inherited base classes: nn with example: obj = BottleneckBlock()