code: def setUp(self):
      super().setUp()
      self.mtv_cfg = ml_collections.ConfigDict(
          {
              "init_from": {
                  "restore_input_embedding": True,
                  "restore_positional_embedding": True,
                  "positional_embed_size_change": "tile",
              },
              "dataset_configs": {
                  "num_frames": 4,
              },
              "model": ml_collections.ConfigDict(
                  {
                      "view_configs": [
                          ml_collections.ConfigDict(
                              {
                                  "patches": {
                                      "size": (4, 4, 2),
                                  }
                              }
                          ),
                          ml_collections.ConfigDict(
                              {
                                  "patches": {
                                      "size": (4, 4, 1),
                                  }
                              }
                          ),
                      ],
                      "classifier": "gap",
                      "temporal_encoding_config": {
                          "kernel_init_method": "central_frame_initializer",
                          "method": "3d_conv",
                      },
                  }
              ),
          }
      )
      self.mtv_params = {
          "embedding_view0": {
              "kernel": np.zeros((2, 4, 4, 3, 8)),
              "bias": np.zeros((8)),
          },
          "embedding_view1": {
              "kernel": np.zeros((1, 4, 4, 3, 16)),
              "bias": np.zeros((16)),
          },
          "MultiviewEncoder": {
              "posembed_input_view0": {
                  "pos_embedding": np.zeros((1, 6 * 6, 8)),
              },
              "encoderblock_0_view0": jnp.zeros((10)),
              "encoderblock_1_view0": jnp.zeros((10)),
              "posembed_input_view1": {
                  "pos_embedding": np.zeros((1, 6 * 6, 16)),
              },
              "encoderblock_0_view1": jnp.zeros((10)),
              "encoderblock_1_view1": jnp.zeros((10)),
              "encoderblock_2_view1": jnp.zeros((10)),
          },
          "output_projection": jnp.zeros((10)),
      }
  
      self.expected_updated_mtv_params = {
          "embedding_view0": {
              "kernel": np.ones((2, 4, 4, 3, 8)),
              "bias": np.ones((8)),
          },
          "embedding_view1": {
              "kernel": np.ones((1, 4, 4, 3, 16)),
              "bias": np.ones((16)),
          },
          "MultiviewEncoder": {
              "posembed_input_view0": {
                  "pos_embedding": np.ones((1, 6 * 6, 8)),
              },
              "encoderblock_0_view0": jnp.ones((10)),
              "encoderblock_1_view0": jnp.ones((10)),
              "posembed_input_view1": {
                  "pos_embedding": np.ones((1, 6 * 6, 16)),
              },
              "encoderblock_0_view1": jnp.ones((10)),
              "encoderblock_1_view1": jnp.ones((10)),
              "encoderblock_2_view1": jnp.ones((10)),
          },
          "output_projection": jnp.zeros((10)),
      }
      self.restored_mtv_cfg = ml_collections.ConfigDict(
          {
              "dataset_configs": {
                  "num_frames": 4,
              },
              "model": ml_collections.ConfigDict(
                  {
                      "view_configs": [
                          ml_collections.ConfigDict(
                              {
                                  "patches": {
                                      "size": (6, 6, 4),
                                  }
                              }
                          ),
                          ml_collections.ConfigDict(
                              {
                                  "patches": {
                                      "size": (6, 6, 2),
                                  }
                              }
                          ),
                      ],
                      "classifier": "gap",
                      "temporal_encoding_config": {
                          "kernel_init_method": "central_frame_initializer",
                          "method": "3d_conv",
                      },
                  }
              ),
          }
      )
      self.restored_mtv_params = {
          "embedding_view0": {
              "kernel": np.ones((4, 6, 6, 3, 8)),
              "bias": np.ones((8)),
          },
          "embedding_view1": {
              "kernel": np.ones((2, 6, 6, 3, 16)),
              "bias": np.ones((16)),
          },
          "MultiviewEncoder": {
              "posembed_input_view0": {
                  "pos_embedding": np.ones((1, 4 * 4, 8)),
              },
              "encoderblock_0_view0": jnp.ones((10)),
              "encoderblock_1_view0": jnp.ones((10)),
              "posembed_input_view1": {
                  "pos_embedding": np.ones((1, 4 * 4, 16)),
              },
              "encoderblock_0_view1": jnp.ones((10)),
              "encoderblock_1_view1": jnp.ones((10)),
              "encoderblock_2_view1": jnp.ones((10)),
          },
          "output_projection": jnp.ones((10)),
      }
      self.restored_vit_params = {
          "embedding": {
              "kernel": np.ones((4, 4, 3, 8)),
              "bias": np.ones((8)),
          },
          "Transformer": {
              "posembed_input": {
                  "pos_embedding": jnp.ones((1, 6 * 6, 8)),
              },
              "encoderblock_0": jnp.ones((10)),
              "encoderblock_1": jnp.ones((10)),
              "encoder_norm": jnp.ones((10)),
          },
          "output_projection": jnp.ones((10)),
      }
      self.restored_vit_cfg = ml_collections.ConfigDict(
          {"model": {"classifier": "gap"}}
      )
      self.expected_updated_mtv_params_from_vit = {
          "embedding_view0": {
              # Center frame initialization is used.
              "kernel": np.concatenate(
                  [np.zeros((1, 4, 4, 3, 8)), np.ones((1, 4, 4, 3, 8))],
                  axis=0,
              ),
              "bias": np.ones((8)),
          },
          "embedding_view1": {
              "kernel": np.zeros((1, 4, 4, 3, 16)),
              "bias": np.zeros((16)),
          },
          "MultiviewEncoder": {
              "posembed_input_view0": {
                  "pos_embedding": jnp.ones((1, 6 * 6, 8)),
              },
              "encoderblock_0_view0": jnp.ones((10)),
              "encoderblock_1_view0": jnp.ones((10)),
              "posembed_input_view1": {
                  "pos_embedding": np.zeros((1, 6 * 6, 16)),
              },
              "encoderblock_0_view1": jnp.zeros((10)),
              "encoderblock_1_view1": jnp.zeros((10)),
              "encoderblock_2_view1": jnp.zeros((10)),
          },
          "output_projection": jnp.zeros((10)),
      }
  
imports: from absl.testing import parameterized
  import jax.numpy
  import ml_collections
  import numpy
  from scenic.projects.mtv import model_utils
  import tensorflow
label_desc: Use image node_id 1 for calling the ModelUtilsTest obj's underlying member method code with example usage: obj.setUp() without return types