mindspore.ops.matrix_diag
- mindspore.ops.matrix_diag(x, k=0, num_rows=- 1, num_cols=- 1, padding_value=0, align='RIGHT_LEFT')[源代码]
使用 x 中的元素值作为输出tensor的对角线,其余用 padding_value 填充。
num_rows 和 num_cols 为int32类型的单值tensor,若为-1,则表示输出tensor的最内层矩阵是一个方阵。
- 参数:
x (Tensor) - 输入tensor。
k (Union[int, Tensor], 可选) - 对角线偏移。正值表示超对角线,负值表示次对角线。当k是2个整数,表示子对角线的上界和下界。默认
0
。num_rows (Union[int, Tensor], 可选) - 输出tensor的行数。默认
-1
。num_cols (Union[int, Tensor], 可选) - 输出tensor的列数。默认
-1
。padding_value (Union[int, float, Tensor], 可选) - 填充对角线带外区域的数值。默认
0
。align (str, 可选) - 指定超对角线和次对角线的对齐方式。 可选
"RIGHT_LEFT"
、"LEFT_RIGHT"
、"LEFT_LEFT"
、"RIGHT_RIGHT"
。 默认"RIGHT_LEFT"
。"RIGHT_LEFT"
表示将超对角线与右侧对齐(左侧填充行),将次对角线与左侧对齐(右侧填充行)。"LEFT_RIGHT"
表示将超对角线与左侧对齐(右侧填充行),将次对角线与右侧对齐(左侧填充行)。"LEFT_LEFT"
表示将超对角线和次对角线均与左侧对齐(右侧填充行)。"RIGHT_RIGHT"
表示将超对角线和次对角线均与右侧对齐(左侧填充行)。
- 返回:
Tensor
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> x = mindspore.tensor([[8., 9., 0.], ... [1., 2., 3.], ... [0., 4., 5.]]) >>> k = mindspore.tensor([-1, 1], mindspore.int32) >>> padding_value = mindspore.tensor(11.) >>> num_rows = mindspore.tensor(3, mindspore.int32) >>> num_cols = mindspore.tensor(3, mindspore.int32) >>> output = mindspore.ops.matrix_diag(x, k, num_rows, num_cols, padding_value, align='LEFT_RIGHT') >>> print(output) [[ 1. 8. 11.] [ 4. 2. 9.] [11. 5. 3.]] >>> print(output.shape) (3, 3)