Join us at TensorFlow World, Oct 28-31. Use code TF20 for 20% off select passes. Register now


TensorFlow 2.0 version

Defined in generated file: python/ops/

Returns a batched matrix tensor with new batched diagonal values.


  • tf.compat.v1.linalg.set_diag
  • tf.compat.v1.matrix_set_diag
  • tf.compat.v2.linalg.set_diag
  • tf.matrix_set_diag

Given input and diagonal, this operation returns a tensor with the same shape and values as input, except for the main diagonal of the innermost matrices. These will be overwritten by the values in diagonal.

The output is computed as follows:

Assume input has k+1 dimensions [I, J, K, ..., M, N] and diagonal has k dimensions [I, J, K, ..., min(M, N)]. Then the output is a tensor of rank k+1 with dimensions [I, J, K, ..., M, N] where:

  • output[i, j, k, ..., m, n] = diagonal[i, j, k, ..., n] for m == n.
  • output[i, j, k, ..., m, n] = input[i, j, k, ..., m, n] for m != n.


  • input: A Tensor. Rank k+1, where k >= 1.
  • diagonal: A Tensor. Must have the same type as input. Rank k, where k >= 1.
  • name: A name for the operation (optional).


A Tensor. Has the same type as input.