class_docstr: Add the several SELayers to I3D for optical flow input.
code: def __init__(self, num_channels, num_classes, attention):
      super(SEInceptionI3DFlow, self).__init__()
      model = InceptionI3d(
          in_channels=num_channels, num_classes=num_classes
      )
      temporal_length = 16
  
      # Add channel-wise SELayer
      if attention in [
          "SELayerC",
          "SELayerCoC",
          "SELayerMC",
          "SELayerMAC",
      ]:
          se_layer = get_selayer(attention)
          model.Mixed_3b.add_module(attention, se_layer(256))
          model.Mixed_3c.add_module(attention, se_layer(480))
          model.Mixed_4b.add_module(attention, se_layer(512))
          model.Mixed_4c.add_module(attention, se_layer(512))
          model.Mixed_4d.add_module(attention, se_layer(512))
          model.Mixed_4e.add_module(attention, se_layer(528))
          model.Mixed_4f.add_module(attention, se_layer(832))
          model.Mixed_5b.add_module(attention, se_layer(832))
          model.Mixed_5c.add_module(attention, se_layer(1024))
  
      # Add temporal-wise SELayer
      elif attention == "SELayerT":
          se_layer = get_selayer(attention)
          model.Mixed_3b.add_module(
              attention, se_layer(temporal_length // 4)
          )
          model.Mixed_3c.add_module(
              attention, se_layer(temporal_length // 4)
          )
          model.Mixed_4b.add_module(
              attention, se_layer(temporal_length // 8)
          )
          model.Mixed_4c.add_module(
              attention, se_layer(temporal_length // 8)
          )
          model.Mixed_4d.add_module(
              attention, se_layer(temporal_length // 8)
          )
          model.Mixed_4e.add_module(
              attention, se_layer(temporal_length // 8)
          )
          model.Mixed_4f.add_module(
              attention, se_layer(temporal_length // 8)
          )
  
      # Add channel-temporal-wise SELayer
      elif attention == "SELayerCT":
          model.Mixed_3b.add_module(attention + "c", SELayerC(256))
          model.Mixed_3c.add_module(attention + "c", SELayerC(480))
          model.Mixed_4b.add_module(attention + "c", SELayerC(512))
          model.Mixed_4c.add_module(attention + "c", SELayerC(512))
          model.Mixed_4d.add_module(attention + "c", SELayerC(512))
          model.Mixed_4e.add_module(attention + "c", SELayerC(528))
          model.Mixed_4f.add_module(attention + "c", SELayerC(832))
          model.Mixed_5b.add_module(attention + "c", SELayerC(832))
          model.Mixed_5c.add_module(attention + "c", SELayerC(1024))
  
          model.Mixed_3b.add_module(
              attention + "t", SELayerT(temporal_length // 4)
          )
          model.Mixed_3c.add_module(
              attention + "t", SELayerT(temporal_length // 4)
          )
          model.Mixed_4b.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4c.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4d.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4e.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4f.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
  
      # Add temporal-channel-wise SELayer
      elif attention == "SELayerTC":
          model.Mixed_3b.add_module(
              attention + "t", SELayerT(temporal_length // 4)
          )
          model.Mixed_3c.add_module(
              attention + "t", SELayerT(temporal_length // 4)
          )
          model.Mixed_4b.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4c.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4d.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4e.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
          model.Mixed_4f.add_module(
              attention + "t", SELayerT(temporal_length // 8)
          )
  
          model.Mixed_3b.add_module(attention + "c", SELayerC(256))
          model.Mixed_3c.add_module(attention + "c", SELayerC(480))
          model.Mixed_4b.add_module(attention + "c", SELayerC(512))
          model.Mixed_4c.add_module(attention + "c", SELayerC(512))
          model.Mixed_4d.add_module(attention + "c", SELayerC(512))
          model.Mixed_4e.add_module(attention + "c", SELayerC(528))
          model.Mixed_4f.add_module(attention + "c", SELayerC(832))
          model.Mixed_5b.add_module(attention + "c", SELayerC(832))
          model.Mixed_5c.add_module(attention + "c", SELayerC(1024))
  
      else:
          raise ValueError(
              "Wrong MODEL.ATTENTION. Current:{}".format(attention)
          )
  
      self.model = model
  
file_path: pykale/kale/embed/video_se_i3d.py
imports: import torch.nn
  from torch.hub import load_state_dict_from_url
  from kale.embed.video_i3d import InceptionI3d
  from kale.embed.video_selayer import get_selayer, SELayerC, SELayerT
label_desc: Use image node_id 1 to create a new SEInceptionI3DFlow object from inherited base classes: nn with example: obj = SEInceptionI3DFlow(num_channels, num_classes, attention)