Missed TensorFlow World? Check out the recap. Learn more


TensorFlow 2.0 version

Defined in generated file: python/ops/gen_array_ops.py

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.