code: def setUp(self):
      model_config_template = {
          "name": "resnext3d",
          "input_key": "video",
          "clip_crop_size": 112,
          "skip_transformation_type": "postactivated_shortcut",
          "frames_per_clip": 32,
          "input_planes": 3,
          "stem_name": "resnext3d_stem",
          "stem_planes": 64,
          "stem_temporal_kernel": 3,
          "stage_planes": 64,
          "num_groups": 1,
          "width_per_group": 16,
          "heads": [
              {
                  "name": "fully_convolutional_linear",
                  "unique_id": "default_head",
                  "in_plane": 512,
                  "pool_size": (2, 7, 7),
                  "activation_func": "softmax",
                  "num_classes": 2,
              }
          ],
      }
      pbt = "postactivated_bottleneck_transformation"
      model_config_variants = [
          # ResNeXt3D-34
          {
              "residual_transformation_type": "basic_transformation",
              "num_blocks": [3, 4, 6, 3],
          },
          # ResNeXt3D-50
          {
              "residual_transformation_type": pbt,
              "num_blocks": [3, 4, 6, 3],
          },
          # ResNeXt3D-101
          {
              "residual_transformation_type": pbt,
              "num_blocks": [3, 4, 23, 3],
          },
      ]
  
      self.model_configs = []
      for variant in model_config_variants:
          model_config = copy.deepcopy(model_config_template)
          model_config.update(variant)
  
          block_idx = model_config["num_blocks"][-1]
          # attach the head at the last block
          model_config["heads"][0][
              "fork_block"
          ] = "pathway0-stage4-block%d" % (block_idx - 1)
  
          self.model_configs.append(model_config)
  
      self.batchsize = 1
  
      self.forward_pass_configs = {
          "train": {
              # input shape: N x C x T x H x W
              "input": {
                  "video": torch.rand(self.batchsize, 3, 16, 112, 112)
              },
              "model": {
                  "stem_maxpool": False,
                  "stage_temporal_stride": [1, 2, 2, 2],
                  "stage_spatial_stride": [1, 2, 2, 2],
              },
          },
          "test": {
              "input": {
                  "video": torch.rand(self.batchsize, 3, 16, 256, 320)
              },
              "model": {
                  "stem_maxpool": True,
                  "stage_temporal_stride": [1, 2, 2, 2],
                  "stage_spatial_stride": [1, 2, 2, 2],
              },
          },
      }
  
file_path: ClassyVision/test/models_resnext3d_test.py
imports: import copy
  import unittest
  import torch
  from classy_vision.models import build_model, ClassyModel
  from test.generic.utils import compare_model_state
label_desc: Use image node_id 1 for calling the TestResNeXt3D obj's underlying member method code with example usage: obj.setUp() without return types