mindspore.ops.LuUnpack
- class mindspore.ops.LuUnpack(unpack_data=True, unpack_pivots=True)[源代码]
将 LU_data 和 LU_pivots 还原为为P, L, U矩阵,其中P为置换矩阵,L为下三角矩阵,U为上三角矩阵。通常情况下, LU_data 和 LU_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
样例:
>>> import numpy as np >>> from mindspore import Tensor, ops >>> from mindspore import dtype as mstype >>> 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]]]