mindspore.ops.LuUnpack

class mindspore.ops.LuUnpack(unpack_data=True, unpack_pivots=True)[源代码]

LU_dataLU_pivots 还原为为P, L, U矩阵,其中P为置换矩阵,L为下三角矩阵,U为上三角矩阵。通常情况下, LU_dataLU_pivots 是矩阵通过LU分解生成的。

警告

这是一个实验性API,后续可能修改或删除。

更多参考详见 mindspore.ops.lu_unpack()

参数:
  • unpack_data (bool,可选) - 是否解压缩 LU_data 的标志。如果为False,则返回的L和U为None。默认值:True。

  • unpack_pivots (bool,可选) - 是否将 LU_pivots 解压缩为置换矩阵P的标志。如果为False,则返回的P为None。默认值:True。

输入:
  • LU_data (Tensor) - Tensor,打包的LU分解数据,shape为 \((*, M, N)\) ,其中 \(*\) 为batch维度,其中 * 是batch 维度,数据类型为int8、uint8、int16、int32、int64、float16、float32、float64。 LU_data 的维度必须等于或大于2。

  • LU_pivots (Tensor) - Tensor,打包的LU分枢轴,shape为 \((*, min(M, N))\) ,其中 \(*\) 为batch维度,其中 * 是batch 维度,数据类型为int8、uint8、int16、int32或int64。

输出:
  • pivots (Tensor) - LU分解的置换矩阵,shape为 \((*, M, M)\) ,数据类型与 LU_data 相同。

  • L (Tensor) - LU分解的L矩阵,数据类型与 LU_data 相同。

  • U (Tensor) - LU分解的U矩阵,数据类型与 LU_data 相同。

支持平台:

GPU CPU

样例:

>>> LU_data = Tensor(np.array([[[-0.3806, -0.4872,  0.5536],
...                             [-0.1287,  0.6508, -0.2396],
...                             [ 0.2583,  0.5239,  0.6902]],
...                             [[ 0.6706, -1.1782,  0.4574],
...                             [-0.6401, -0.4779,  0.6701],
...                             [ 0.1015, -0.5363,  0.6165]]]), mstype.float32)
>>> LU_pivots = Tensor(np.array([[1, 3, 3],
...                              [2, 3, 3]]), mstype.int32)
>>> lu_unpack = ops.LuUnpack()
>>> pivots, L, U = lu_unpack(LU_data, LU_pivots)
>>> print(pivots)
[[[1. 0. 0.]
  [0. 0. 1.]
  [0. 1. 0.]]

 [[0. 0. 1.]
  [1. 0. 0.]
  [0. 1. 0.]]]
>>> print(L)
[[[ 1.      0.      0.    ]
  [-0.1287  1.      0.    ]
  [ 0.2583  0.5239  1.    ]]

 [[ 1.      0.      0.    ]
  [-0.6401  1.      0.    ]
  [ 0.1015 -0.5363  1.    ]]]
>>> print(U)
[[[-0.3806 -0.4872  0.5536]
  [ 0.      0.6508 -0.2396]
  [ 0.      0.      0.6902]]

 [[ 0.6706 -1.1782  0.4574]
  [ 0.     -0.4779  0.6701]
  [ 0.      0.      0.6165]]]