文档反馈

问题文档片段

问题文档片段包含公式时,显示为空格。

提交类型
issue

有点复杂...

找人问问吧。

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

- 错别字或拼写错误,标点符号使用错误、公式错误或显示异常。

- 链接错误、空单元格、格式错误。

- 英文中包含中文字符。

- 界面和描述不一致,但不影响操作。

- 表述不通顺,但不影响理解。

- 版本号不匹配:如软件包名称、界面版本号。

易用性

- 易用性:

- 关键步骤错误或缺失,无法指导用户完成任务。

- 缺少主要功能描述、关键词解释、必要前提条件、注意事项等。

- 描述内容存在歧义指代不明、上下文矛盾。

- 逻辑不清晰,该分类、分项、分步骤的没有给出。

正确性

- 正确性:

- 技术原理、功能、支持平台、参数类型、异常报错等描述和软件实现不一致。

- 原理图、架构图等存在错误。

- 命令、命令参数等错误。

- 代码片段错误。

- 命令无法完成对应功能。

- 界面错误,无法指导操作。

- 代码样例运行报错、运行结果不符。

风险提示

- 风险提示:

- 对重要数据或系统存在风险的操作,缺少安全提示。

内容合规

- 内容合规:

- 违反法律法规,涉及政治、领土主权等敏感词。

- 内容侵权。

请选择问题类型

问题描述

点击输入详细问题描述,以帮助我们快速定位问题。

mindspore.ops.matrix_diag

mindspore.ops.matrix_diag(x, k=0, num_rows=- 1, num_cols=- 1, padding_value=0, align='RIGHT_LEFT')[源代码]

返回一个Tensor,其k[0]到k[1]的对角线特定为给定对角线Tensor,其余值均填充为 padding_value 。 通过 num_rowsnum_cols 指定输出最内层矩阵的维度,其维度大小需要符合要求。如果两者都没有指定,那么算子假定输出Tensor最内层的矩阵是方阵,并从输入 k 和输入 x 最内层的维度推断出输出的具体维度大小。如果 num_rowsnum_cols 仅指定其中一个,那么算子将推导出最小的合法值作为输出的维度。 此外,当只有一条对角线时(即当k为整数或者k[0]==k[1]), x 的第一维到倒数第二维都属于批量的范围。否则倒数第二维不属于批量的维度。

参数:
  • x (Tensor) - 对角线Tensor。

  • k (Union[int, Tensor], 可选) - 对角线偏移。int32类型的Tensor。正值表示超对角线,0表示主对角线,负值表示次对角线。k可以是单个整数(对于单个对角线)或一对整数,指定矩阵带的上界和下界,且k[0]不得大于k[1]。该值必须在必须在(-num_rows,num_cols)中。默认值: 0

  • num_rows (Union[int, Tensor], 可选) - 输出Tensor的行数。int32类型的单值Tensor,若该值为-1,则表示输出Tensor的最内层矩阵是一个方阵,实际行数将由其他输入推导, 即 num_rows=x.shape[1]min(k[1],0) ; 否则,该值必须大于或等于 x.shape[1]min(k[1],0) 。默认值: -1

  • num_cols (Union[int, Tensor], 可选) - 输出Tensor的列数。int32类型的单值Tensor,若该值为-1,则表示输出Tensor的最内层矩阵是一个方阵,实际列数将由其他输入推导,即 num_cols=x.shape[1]+max(k[0],0) ; 否则,该值必须大于或等于 x.shape[1]min(k[1],0) 。默认值: -1

  • padding_value (Union[int, float, Tensor], 可选) - 填充对角线带外区域的数值,是一个与 x 相同的数据类型的单值Tensor。默认值: 0

  • align (str, 可选) - 可选字符串,指定超对角线和次对角线的对齐方式。 可选值: "RIGHT_LEFT""LEFT_RIGHT""LEFT_LEFT""RIGHT_RIGHT" 。 默认值: "RIGHT_LEFT"

    • "RIGHT_LEFT" 表示将超对角线与右侧对齐(左侧填充行),将次对角线与左侧对齐(右侧填充行)。

    • "LEFT_RIGHT" 表示将超对角线与左侧对齐(右侧填充行),将次对角线与右侧对齐(左侧填充行)。

    • "LEFT_LEFT" 表示将超对角线和次对角线均与左侧对齐(右侧填充行)。

    • "RIGHT_RIGHT" 表示将超对角线与次对角线均右侧对齐(左侧填充行)。

返回:

Tensor,与 x 的类型相同。 设 x 有r维 (I,J,...,M,N) 。当只给出一条对角线(k是整数或k[0]==k[1])时,输出Tensor的维度是r + 1,具有shape (I,J,...,M,num_rows,num_cols) 。否则,输出Tensor的维度是r,具有shape (I,J,...,num_rows,num_cols)

异常:
  • TypeError - x 不为Tensor。

  • TypeError - xpadding_value 数据类型不同。

  • TypeError - knum_rowsnum_cols 数据类型不为int32。

  • ValueError - k 的维度不为0或1。

  • ValueError - padding_valuenum_rowsnum_cols 的维度不为0。

  • ValueError - k 的大小不为1或2。

  • ValueError - k 的取值不在 (-num_rows, num_cols) 范围内。

  • ValueError - 当k[0] != k[1]时,k[1]小于k[0]。

  • ValueError - 当k为整数或k[0] == k[1]时, x 的维度小于1。

  • ValueError - 当k[0] != k[1]时,x 的维度小于2。

  • ValueError - 当k[0] != k[1]时,x.shape[-2]不等于k[1] - k[0] + 1。

  • ValueError - num_rowsnum_colsx 的维度和 k 的值不匹配。

  • ValueError - align 取值不在合法值集合内。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor
>>> from mindspore import ops
>>> x = Tensor(np.array([[8, 9, 0],
...                      [1, 2, 3],
...                      [0, 4, 5]]), mindspore.float32)
>>> k =Tensor(np.array([-1, 1]), mindspore.int32)
>>> num_rows = Tensor(np.array(3), mindspore.int32)
>>> num_cols = Tensor(np.array(3), mindspore.int32)
>>> padding_value = Tensor(np.array(11), mindspore.float32)
>>> output = 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)