特别是,当存在特征值大于1的特征值时,我会感到困惑。通常,如果特征值的多重性> 1,则矩阵特征值相对于其条目is not defined的雅可比行列式(请参阅第二部分)。但是,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的特征值时,谁能给我们一些启发?