code: def interpolate_with_weights(
      knots: type_alias.TensorLike,
      weights: type_alias.TensorLike,
      name: str = "bspline_interpolate_with_weights",
  ) -> tf.Tensor:
      """Interpolates knots using knot weights.
  
      Note:
        In the following, A1 to An, and B1 to Bk are optional batch dimensions.
  
      Args:
        knots: A tensor with shape `[B1, ..., Bk, C]` containing knot values, where
          `C` is the number of knots.
        weights: A tensor with shape `[A1, ..., An, C]` containing dense weights for
          the knots, where `C` is the number of knots.
        name: A name for this op. Defaults to "bspline_interpolate_with_weights".
  
      Returns:
        A tensor with shape `[A1, ..., An, B1, ..., Bk]`, which is the result of
        spline interpolation.
  
      Raises:
        ValueError: If the last dimension of knots and weights is not equal.
      """
      with tf.name_scope(name):
          knots = tf.convert_to_tensor(value=knots)
          weights = tf.convert_to_tensor(value=weights)
  
          shape.compare_dimensions(
              tensors=(knots, weights),
              axes=-1,
              tensor_names=("knots", "weights"),
          )
  
      return tf.tensordot(weights, knots, (-1, -1))
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import enum
  from typing import Tuple, Union
  import tensorflow
  from tensorflow_graphics.util import asserts
  from tensorflow_graphics.util import export_api
  from tensorflow_graphics.util import shape
  from tensorflow_graphics.util import type_alias
label_desc: Use image node_id 7 for calling a global function with example usage: interpolate_with_weights(knots, weights, name) and returns: tf