Missed TensorFlow World? Check out the recap. Learn more

tf.linalg.tridiagonal_matmul

TensorFlow 1 version View source on GitHub

Multiplies tridiagonal matrix by matrix.

Aliases:

tf.linalg.tridiagonal_matmul(
    diagonals,
    rhs,
    diagonals_format='compact',
    name=None
)

diagonals is representation of 3-diagonal NxN matrix, which depends on diagonals_format.

In matrix format, diagonals must be a tensor of shape [..., M, M], with two inner-most dimensions representing the square tridiagonal matrices. Elements outside of the three diagonals will be ignored.

If sequence format, diagonals is list or tuple of three tensors: [superdiag, maindiag, subdiag], each having shape [..., M]. Last element of superdiag first element of subdiag are ignored.

In compact format the three diagonals are brought together into one tensor of shape [..., 3, M], with last two dimensions containing superdiagonals, diagonals, and subdiagonals, in order. Similarly to sequence format, elements diagonals[..., 0, M-1] and diagonals[..., 2, 0] are ignored.

The sequence format is recommended as the one with the best performance.

rhs is matrix to the right of multiplication. It has shape [..., M, N].

Example:

superdiag = tf.constant([-1, -1, 0], dtype=tf.float64)
maindiag = tf.constant([2, 2, 2], dtype=tf.float64)
subdiag = tf.constant([0, -1, -1], dtype=tf.float64)
diagonals = [superdiag, maindiag, subdiag]
rhs = tf.constant([[1, 1], [1, 1], [1, 1]], dtype=tf.float64)
x = tf.linalg.tridiagonal_matmul(diagonals, rhs, diagonals_format='sequence')

Args:

  • diagonals: A Tensor or tuple of Tensors describing left-hand sides. The shape depends of diagonals_format, see description above. Must be float32, float64, complex64, or complex128.
  • rhs: A Tensor of shape [..., M, N] and with the same dtype as diagonals.
  • diagonals_format: one of sequence, or compact. Default is compact.
  • name: A name to give this Op (optional).

Returns:

A Tensor of shape [..., M, N] containing the result of multiplication.

Raises:

  • ValueError: An unsupported type is provided as input, or when the input tensors have incorrect shapes.