tensorflow如何计算“.linalg.eigh”的梯度?

tensorflow如何计算“.linalg.eigh”的梯度?,tensorflow,Tensorflow,具体来说,我有点搞不清楚当特征值的重数大于1时会发生什么。通常,如果特征值的重数大于1,则矩阵特征值相对于其项的雅可比矩阵(见第二节)。然而,tensorflow.linalg.eigh似乎并不关心这一点,不管是否存在多重特征值,它都会愉快地返回一个梯度: >>> sess.run(mat) array([[1.50776616, 0.33370629, 0.37226308], [0.33370629, 1.21931333, 0.24465303],

具体来说,我有点搞不清楚当特征值的重数大于1时会发生什么。通常,如果特征值的重数大于1,则矩阵特征值相对于其项的雅可比矩阵(见第二节)。然而,
tensorflow.linalg.eigh
似乎并不关心这一点,不管是否存在多重特征值,它都会愉快地返回一个梯度:

>>> sess.run(mat)
array([[1.50776616, 0.33370629, 0.37226308],
       [0.33370629, 1.21931333, 0.24465303],
       [0.37226308, 0.24465303, 1.27292051]])
>>> eigs, eigvs = tf.linalg.eigh(mat)
>>> sess.run(eigs)
array([1., 1., 2.])
>>> sess.run(tf.gradients(eigs,mat,tf.constant([1.,2,3], dtype=tf.float64)))
[array([[ 2.01553232,  0.        ,  0.        ],
       [ 1.33482516,  1.99307962,  0.        ],
       [ 1.48905231, -0.01543994,  1.99138806]])]
可能的情况是,尽管雅可比矩阵不是一般定义的,但总导数是?在任何情况下,我都很难想象如何利用这些梯度。当特征值的重数大于1时,有人能解释一下梯度是如何计算的吗