张量流如何计算`.linalg.eigh`的梯度?

时间:2019-11-12 19:59:09

标签: tensorflow

特别是,当存在特征值大于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的特征值时,谁能给我们一些启发?

0 个答案:

没有答案