code: def interpolate_input_embedding(
      embedding_params: Dict[str, jnp.ndarray],
      restored_embedding_params: Dict[str, jnp.ndarray],
  ):
      """Interpolates input embedding.
  
      This function is used to initialize input embeddings for MTV models when the
      current model uses a different size of tubelets than the pretrained one.
  
      Args:
        embedding_params: A dict of embedding parameters to be updated containing a
          kernel, which is a 5D float tensor of shape (new_kernel_t, new_kernel_h,
          new_kernel_w, in_channels, out_channels).
        restored_embedding_params: A dict of embedding parameters from which we load
          the weights. It has a `kernel` parameter, which is a 5D float tensor of
          shape (kernel_t, kernel_h, kernel_w, in_channels, out_channels).
  
      Returns:
        A dict of updated parameters. Only `kernel` is updated.
      """
      kernel = embedding_params["kernel"]
      restored_kernel = restored_embedding_params["kernel"]
      logging.info(
          "Resizing input embedding kernel from %s to %s.",
          restored_kernel.shape,
          kernel.shape,
      )
      zoom = (
          kernel.shape[0] / restored_kernel.shape[0],
          kernel.shape[1] / restored_kernel.shape[1],
          kernel.shape[2] / restored_kernel.shape[2],
          1,
          1,
      )
      embedding_params["kernel"] = scipy.ndimage.zoom(
          restored_kernel, zoom, order=1
      )
      embedding_params["bias"] = restored_embedding_params["bias"]
  
imports: from typing import Any, Dict, List, Optional, Sequence
  from absl import logging
  import flax
  import jax.numpy
  import ml_collections
  import numpy
  from scenic.projects.vivit import model_utils
  from scenic.train_lib import train_utils
  import scipy.ndimage
label_desc: Use image node_id 3 for calling a global function with example usage: interpolate_input_embedding(embedding_params, restored_embedding_params) without return types