docstr: To test different versions of X3D, set the input to:
  X3D-XS: (4, 160, 2.0, 2.2, 2.25)
  X3D-S: (13, 160, 2.0, 2.2, 2.25)
  X3D-M: (16, 224, 2.0, 2.2, 2.25)
  X3D-L: (16, 312, 2.0, 5.0, 2.25)
  
  Each of the parameters corresponds to input_clip_length, input_crop_size,
  width_factor, depth_factor and bottleneck_factor.
docstr_tok: ["To","test","different","versions","of","X3D",",","set","the","input","to",":","X3D-XS",":","(","4",",","160",",","2.0",",","2.2",",","2.25",")","X3D-S",":","(","13",",","160",",","2.0",",","2.2",",","2.25",")","X3D-M",":","(","16",",","224",",","2.0",",","2.2",",","2.25",")","X3D-L",":","(","16",",","312",",","2.0",",","5.0",",","2.25",")","Each","of","the","parameters","corresponds","to","input_clip_length",",","input_crop_size",",","width_factor",",","depth_factor","and","bottleneck_factor","."]
code: def test_create_x3d(self):
      """
      To test different versions of X3D, set the input to:
      X3D-XS: (4, 160, 2.0, 2.2, 2.25)
      X3D-S: (13, 160, 2.0, 2.2, 2.25)
      X3D-M: (16, 224, 2.0, 2.2, 2.25)
      X3D-L: (16, 312, 2.0, 5.0, 2.25)
  
      Each of the parameters corresponds to input_clip_length, input_crop_size,
      width_factor, depth_factor and bottleneck_factor.
      """
      for (
          input_clip_length,
          input_crop_size,
          width_factor,
          depth_factor,
          bottleneck_factor,
      ) in [
          (4, 160, 2.0, 2.2, 2.25),
      ]:
          model = create_x3d(
              input_clip_length=input_clip_length,
              input_crop_size=input_crop_size,
              model_num_class=400,
              dropout_rate=0.5,
              width_factor=width_factor,
              depth_factor=depth_factor,
              norm=nn.BatchNorm3d,
              activation=nn.ReLU,
              stem_dim_in=12,
              stem_conv_kernel_size=(5, 3, 3),
              stem_conv_stride=(1, 2, 2),
              stage_conv_kernel_size=((3, 3, 3),) * 4,
              stage_spatial_stride=(2, 2, 2, 2),
              stage_temporal_stride=(1, 1, 1, 1),
              bottleneck=create_x3d_bottleneck_block,
              bottleneck_factor=bottleneck_factor,
              se_ratio=0.0625,
              inner_act=Swish,
              head_dim_out=2048,
              head_pool_act=nn.ReLU,
              head_bn_lin5_on=False,
              head_activation=nn.Softmax,
          )
  
          # Test forwarding.
          for tensor in TestX3d._get_inputs(
              input_clip_length, input_crop_size
          ):
              if tensor.shape[1] != 3:
                  with self.assertRaises(RuntimeError):
                      out = model(tensor)
                  continue
  
              out = model(tensor)
  
              output_shape = out.shape
              output_shape_gt = (tensor.shape[0], 400)
  
              self.assertEqual(
                  output_shape,
                  output_shape_gt,
                  "Output shape {} is different from expected shape {}".format(
                      output_shape, output_shape_gt
                  ),
              )
  
file_path: pytorchvideo/tests/test_models_x3d.py
imports: import os
  import unittest
  import torch
  from pytorchvideo.layers.swish import Swish
  from pytorchvideo.models.x3d import create_x3d, create_x3d_bottleneck_block
  from torch import nn
label_desc: Use image node_id 2 for calling the TestX3d obj's underlying member method code with example usage: obj.test_create_x3d() without return types