mindspore.ops.lu_unpack

查看源文件
mindspore.ops.lu_unpack(LU_data, LU_pivots, unpack_data=True, unpack_pivots=True)[源代码]

mindspore.scipy.linalg.lu_factor() 返回的LU分解结果解包为P、L、U矩阵。

说明

  • LU_data shape为 (,M,N)LU_pivots shape为 (,min(M,N)) 表示batch数量。

参数:
  • LU_data (Tensor) - 打包的LU分解数据,秩大于等于2。

  • LU_pivots (Tensor) - 打包的LU分解枢轴。

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

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

返回:

由tensor组成的tuple。分别为:LU分解的置换矩阵、LU分解的L矩阵、LU分解的U矩阵。

支持平台:

GPU CPU

样例:

>>> import mindspore
>>> LU_data = mindspore.tensor([[[-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]]])
>>> LU_pivots = mindspore.tensor(([[1, 3, 3], [2, 3, 3]]), mindspore.int32)
>>> pivots, L, U = mindspore.ops.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.0000   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]]]