Registration is open for TensorFlow Dev Summit 2020 Learn more


Calculates slerp weights for two normalized quaternions.


Defined in math/interpolation/

Given a percent and two normalized quaternions, this function returns the slerp weights. It can also produce extrapolation weights when percent is outside of the [0, 1] range. It reduces to lerp when input quaternions are almost parallel or anti-parallel. Input quaternions are assumed to be normalized. The debug flag TFG_ADD_ASSERTS_TO_GRAPH defined in can be set to add assertions to the graph that check whether the inputs are normalized, and whether Inf or Nan values are produced.


In the following, A1 to An are optional batch dimensions.


  • quaternion1: A tensor of shape [A1, ... , An, 4] storing normalized quaternions in its last dimension.
  • quaternion2: A tensor of shape [A1, ... , An, 4] storing normalized quaternions in its last dimension.
  • percent: A float or a tensor with a shape broadcastable to the shape [A1, ... , An].
  • eps: A float used to make operations safe. When left as None, the function automatically picks the best epsilon based on the dtype and the operation.
  • name: A name for this op. Defaults to "quaternion_weights".


  • ValueError: If the shapes of quaternions do not match, if the last dimensions of quaternions are not 4, or if percent is neither a float, nor a tensor with last dimension 1.


Two tensors of shape [A1, ... , An, 1] each, which are the two slerp weights for each quaternion.