【问题标题】:Tensorflow pseudo inverse doesn't work for complex matricesTensorFlow 伪逆不适用于复杂矩阵
【发布时间】:2020-05-18 10:12:33
【问题描述】:

Tensorflow documentation 说:

tf.linalg.pinv 是“类似于 numpy.linalg.pinv。它的不同之处仅在于 rcond 的默认值”。

不过,tf.linalg.pinv 要求矩阵为浮点型,而np.linalg.pinv 可用于复杂矩阵。

我想知道为什么他们只会为浮点类型创建它,以及是否有一种直接的方法可以修改 tf.linalg.pinv 以用于复杂矩阵

【问题讨论】:

    标签: python numpy tensorflow matrix matrix-inverse


    【解决方案1】:

    我刚刚遇到了同样的情况。如果您需要显式构建逆,请查看这篇论文:

    https://pdfs.semanticscholar.org/f278/b548b5121fd0d09c2e589439b97fad16ece3.pdf

    特别是,给定一个需要反转的矩阵 M,您可以这样做:

        A = tf.math.real(M)
        C = tf.math.imag(M)
    
        r0  = tf.linalg.pinv(A) @ C
        y11 = tf.linalg.pinv(C @ r0 + A)
        y10 = -r0 @ y11
    
        M_inverse = tf.cast(tf.complex(y11,y10), dtype = M.dtype)
    

    复杂度比纯复杂的实现要高一点,但到目前为止,它已被证明对我来说相当稳定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2015-12-18
      相关资源
      最近更新 更多