我有一个71 * 71的有限float64矩阵,下面有一段摘录。 numpy.linalg.inv可以反转该矩阵,但tensorflow.matrix_inverse会出现此错误:
InvalidArgumentError(参见上面的回溯):输入不是 可逆的。 [[节点:MatrixInverse_1 = MatrixInverseT = DT_FLOAT, 伴随=假, _device =" /作业:本地主机/复制:0 /任务:0 / CPU:0"]]
此外,我可以使用numpy使用张量np.linalg.inv(tf.matmul(XT, X).eval())
的评估来反转它,所以它似乎不是一个数据问题。
有没有人有解决方案?
[ -7.63790894 -5.08866978 -6.6209259 483.20855713
784.34204102 783.43835449 73.17279053 74.09223938
450.47570801 769.8269043 774.1385498 -14.69404697
-13.21867657 812.33081055 811.70593262 -3.88607216
-5.75979233 3.88607216 5.75979233 -7.88097668 34.2455864
36.57875061 19.74640274 710.11187744 698.85675049
669.33203125 2.1271162 17.33749199 19.96108818
902.21704102 902.27490234 902.23791504 902.22412109
902.28668213 902.18884277 902.15979004 902.18945312
902.13446045 902.12585449 902.11260986 902.16412354
902.14099121 902.1932373 902.18847656 902.07629395
-12.97049141 -22.87892342 -13.85427094 902.24389648
-2.24357224 -12.29811287 -12.03248596 -2.06928253
-21.78663063 -18.63744736 -10.67835236 901.97436523
33.95432281 36.67951584 19.38583755 144.95518494
156.08990479 137.80636597 902.09393311 236.29612732
902.21704102 902.15979004 902.215271 297.27478027
146.19558716 22.00869942]
答案 0 :(得分:0)
我认为原因是您的矩阵不可逆。一种选择是使用NumPy支持的np.linalg.pinv()
的{{3}}。将矩阵转换为可逆矩阵的另一种方法是将np.eye(dims)
添加到矩阵中。它会增加误差,但是根据矩阵中数字的范围,这是一个很好的近似值。