code: def interpolate_bilinear(
      grid: types.TensorLike,
      query_points: types.TensorLike,
      indexing: str = "ij",
      name: Optional[str] = None,
  ) -> tf.Tensor:
      """Similar to Matlab's interp2 function.
  
      Finds values for query points on a grid using bilinear interpolation.
  
      Args:
        grid: a 4-D float `Tensor` of shape `[batch, height, width, channels]`.
        query_points: a 3-D float `Tensor` of N points with shape
          `[batch, N, 2]`.
        indexing: whether the query points are specified as row and column (ij),
          or Cartesian coordinates (xy).
        name: a name for the operation (optional).
  
      Returns:
        values: a 3-D `Tensor` with shape `[batch, N, channels]`
  
      Raises:
        ValueError: if the indexing mode is invalid, or if the shape of the
          inputs invalid.
      """
      return _interpolate_bilinear_with_checks(
          grid, query_points, indexing, name
      )
  
file_path: addons/tensorflow_addons/image/dense_image_warp.py
imports: import tensorflow
  from tensorflow_addons.utils import types
  from typing import Optional
label_desc: Use image node_id 1 for calling a global function with example usage: interpolate_bilinear(grid, query_points, indexing, name) and returns: _interpolate_bilinear_with_checks