class_docstr: Args:
      causal(`string`):
          Causal mode.
      pretrained(`bool`):
          Pretrained models. If pretrained is True, num_classes is set to 600,
          conv_type is set to "3d" if causal is False, "2plus1d" if causal is True
          tf_like is set to True.
      num_classes(`int`):
          Number of classes for classifcation.
      conv_type(`string`):
          Type of convolution either 3d or 2plus1d
      tf_like(`bool`):
          Tf_like behaviour, basically same padding for convolutions.
class_docstr_tok: ["Args",":","causal","(","`","string","`",")",":","Causal","mode",".","pretrained","(","`","bool","`",")",":","Pretrained","models",".","If","pretrained","is","True",",","num_classes","is","set","to","600",",","conv_type","is","set","to","``","3d","''","if","causal","is","False",",","``","2plus1d","''","if","causal","is","True","tf_like","is","set","to","True",".","num_classes","(","`","int","`",")",":","Number","of","classes","for","classifcation",".","conv_type","(","`","string","`",")",":","Type","of","convolution","either","3d","or","2plus1d","tf_like","(","`","bool","`",")",":","Tf_like","behaviour",",","basically","same","padding","for","convolutions","."]
code: def __init__(
      self,
      cfg: "CfgNode",
      causal: bool = True,
      pretrained: bool = False,
      num_classes: int = 600,
      conv_type: str = "3d",
      tf_like: bool = False,
  ) -> None:
      super().__init__()
      if pretrained:
          tf_like = True
          num_classes = 600
          conv_type = "2plus1d" if causal else "3d"
      blocks_dic = OrderedDict()
  
      norm_layer = (
          nn.BatchNorm3d if conv_type == "3d" else nn.BatchNorm2d
      )
      activation_layer = Swish if conv_type == "3d" else nn.Hardswish
  
      # conv1
      self.conv1 = ConvBlock3D(
          in_planes=cfg.conv1.input_channels,
          out_planes=cfg.conv1.out_channels,
          kernel_size=cfg.conv1.kernel_size,
          stride=cfg.conv1.stride,
          padding=cfg.conv1.padding,
          causal=causal,
          conv_type=conv_type,
          tf_like=tf_like,
          norm_layer=norm_layer,
          activation_layer=activation_layer,
      )
      # blocks
      for i, block in enumerate(cfg.blocks):
          for j, basicblock in enumerate(block):
              blocks_dic[f"b{i}_l{j}"] = BasicBneck(
                  basicblock,
                  causal=causal,
                  conv_type=conv_type,
                  tf_like=tf_like,
                  norm_layer=norm_layer,
                  activation_layer=activation_layer,
              )
      self.blocks = nn.Sequential(blocks_dic)
      # conv7
      self.conv7 = ConvBlock3D(
          in_planes=cfg.conv7.input_channels,
          out_planes=cfg.conv7.out_channels,
          kernel_size=cfg.conv7.kernel_size,
          stride=cfg.conv7.stride,
          padding=cfg.conv7.padding,
          causal=causal,
          conv_type=conv_type,
          tf_like=tf_like,
          norm_layer=norm_layer,
          activation_layer=activation_layer,
      )
      # pool
      self.classifier = nn.Sequential(
          # dense9
          ConvBlock3D(
              cfg.conv7.out_channels,
              cfg.dense9.hidden_dim,
              kernel_size=(1, 1, 1),
              tf_like=tf_like,
              causal=causal,
              conv_type=conv_type,
              bias=True,
          ),
          Swish(),
          nn.Dropout(p=0.2, inplace=True),
          # dense10d
          ConvBlock3D(
              cfg.dense9.hidden_dim,
              num_classes,
              kernel_size=(1, 1, 1),
              tf_like=tf_like,
              causal=causal,
              conv_type=conv_type,
              bias=True,
          ),
      )
      if causal:
          self.cgap = TemporalCGAvgPool3D()
      if pretrained:
          if causal:
              if cfg.name not in ["A0", "A1", "A2"]:
                  raise ValueError(
                      "Only A0,A1,A2 streaming"
                      + "networks are available pretrained"
                  )
              state_dict = torch.hub.load_state_dict_from_url(
                  cfg.stream_weights
              )
          else:
              state_dict = torch.hub.load_state_dict_from_url(
                  cfg.weights
              )
          self.load_state_dict(state_dict)
      else:
          self.apply(self._weight_init)
      self.causal = causal
  
imports: from collections import OrderedDict
  import torch
  import torch.nn.functional
  from torch import nn, Tensor
  from towhee.models.movinet.movinet_block import ConvBlock3D, BasicBneck
  from towhee.models.utils.causal_module import CausalModule
  from towhee.models.layers.activations import Swish
  from towhee.models.layers.temporal_cg_avgpool3d import TemporalCGAvgPool3D
  from towhee.models.movinet.config import _C
label_desc: Use image node_id 1 to create a new MoViNet object from inherited base classes: nn with example: obj = MoViNet(cfg, causal, pretrained, num_classes, conv_type, tf_like)