Tensorflow无法反转矩阵

时间:2017-11-27 00:14:36

标签: numpy tensorflow

我有一个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]

1 个答案:

答案 0 :(得分:0)

我认为原因是您的矩阵不可逆。一种选择是使用NumPy支持的np.linalg.pinv()的{​​{3}}。将矩阵转换为可逆矩阵的另一种方法是将np.eye(dims)添加到矩阵中。它会增加误差,但是根据矩阵中数字的范围,这是一个很好的近似值。