class_docstr: Implements Conv3d (5x1x1) + (optional) Bn + Activation for pointwise layers.
  The conv layer has fixed kernel of (5, 1, 1), zero padding size of
  (2, 0, 0), stride = (1, 1, 1), dilation = 1.
  
                    Input
                      |
                      ↓
                  conv3d (5x1x1)
                      ↓
                  BatchNorm (optional)
                      ↓
                  Activation
  
  For regular convolution (i.e., groups=1), current implementation of this layer in
  QNNPACK is reasonably efficient.
  
  self.convert_flag property records whether the Conv3d5x1x1BnAct instance has been
  converted; Conv3d5x1x1BnAct is in original form if convert_flag is false, while it
  is in deployable form if convert_flag is true.
  
  Args:
      in_channels (int): number of input channels for conv3d 3x1x1.
      out_channels (int): number of output channels for conv3d 3x1x1.
      groups (int): number of groups for conv.
      bias (bool): if true, use bias for conv.
      activation (str): applies selected activation from supported_act_functions.
          See activation_functions.py for more info about supported activations.
          Currently ReLU ('relu'), Swish ('swish'), Hardswish ('hswish'), Identity
          ('identity') are supported.
      use_bn (bool): if true, use batchnorm.
      norm_eps (float): epsilon for batchnorm.
      norm_momentum (float): momentum for batchnorm.
class_docstr_tok: ["Implements","Conv3d","(","5x1x1",")","+","(","optional",")","Bn","+","Activation","for","pointwise","layers",".","The","conv","layer","has","fixed","kernel","of","(","5",",","1",",","1",")",",","zero","padding","size","of","(","2",",","0",",","0",")",",","stride","=","(","1",",","1",",","1",")",",","dilation","=","1",".","Input","|","\u2193","conv3d","(","5x1x1",")","\u2193","BatchNorm","(","optional",")","\u2193","Activation","For","regular","convolution","(","i.e.",",","groups=1",")",",","current","implementation","of","this","layer","in","QNNPACK","is","reasonably","efficient",".","self.convert_flag","property","records","whether","the","Conv3d5x1x1BnAct","instance","has","been","converted",";","Conv3d5x1x1BnAct","is","in","original","form","if","convert_flag","is","false",",","while","it","is","in","deployable","form","if","convert_flag","is","true",".","Args",":","in_channels","(","int",")",":","number","of","input","channels","for","conv3d","3x1x1",".","out_channels","(","int",")",":","number","of","output","channels","for","conv3d","3x1x1",".","groups","(","int",")",":","number","of","groups","for","conv",".","bias","(","bool",")",":","if","true",",","use","bias","for","conv",".","activation","(","str",")",":","applies","selected","activation","from","supported_act_functions",".","See","activation_functions.py","for","more","info","about","supported","activations",".","Currently","ReLU","(","'relu","'",")",",","Swish","(","'swish","'",")",",","Hardswish","(","'hswish","'",")",",","Identity","(","'identity","'",")","are","supported",".","use_bn","(","bool",")",":","if","true",",","use","batchnorm",".","norm_eps","(","float",")",":","epsilon","for","batchnorm",".","norm_momentum","(","float",")",":","momentum","for","batchnorm","."]
code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      groups: int = 1,
      bias=False,
      activation: str = "relu",
      use_bn=True,
      norm_eps=1e-5,
      norm_momentum=0.1,
  ):
      super().__init__()
      kernel = OrderedDict()
      kernel["conv"] = nn.Conv3d(
          in_channels,
          out_channels,
          kernel_size=(5, 1, 1),
          groups=groups,
          padding=(2, 0, 0),
          bias=bias,
      )
  
      if use_bn:
          kernel["bn"] = nn.BatchNorm3d(
              out_channels, eps=norm_eps, momentum=norm_momentum
          )
      assert (
          activation in supported_act_functions
      ), f"Conv3d5x1x1BnAct: {activation} is not in supported_act_functions."
      kernel["act"] = supported_act_functions[activation]()
      self.kernel = nn.Sequential(kernel)
      self.convert_flag = False
  
imports: import logging
  from collections import OrderedDict
  from typing import Tuple
  import torch
  import torch.nn
  from pytorchvideo.accelerator.efficient_blocks.efficient_block_base import EfficientBlockBase
  from .activation_functions import supported_act_functions
  from .conv_helper import _Conv3dTemporalKernel1Decomposed, _Conv3dTemporalKernel3Decomposed, _Conv3dTemporalKernel5Decomposed, _Reshape
label_desc: Use image node_id 1 to create a new Conv3d5x1x1BnAct object from inherited base classes: EfficientBlockBase with example: obj = Conv3d5x1x1BnAct(in_channels, out_channels, groups, bias, activation, use_bn, norm_eps, norm_momentum)