tf.diag 二维矩阵

tf.diag of a 2D matrix

我有一个二维张量,其中各种数组定义为:

x = tf.constant([[0,1,2],[-1,0,1],[-1,-2,0]])

我想将每个数组转换为对角矩阵,如下所示:

diag_x =
[[[ 0,  0,  0],
  [ 0,  1,  0],
  [ 0,  0,  2]],
 [[-1,  0,  0],
  [ 0,  0,  0],
  [ 0,  0,  1]],
 [[-2,  0,  0],
  [ 0, -1,  0],
  [ 0,  0,  0]]]

但是如果我使用操作 tf.diag(x) 输出不是这样的。

你可以试试:

tf.matrix_set_diag(tf.zeros((3,3,3), dtype=tf.int32), x)

我终于找到了解决方案:

tf.matrix_diag(x)