文档反馈

问题文档片段

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

提交类型
issue

有点复杂...

找人问问吧。

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

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

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

- 英文中包含中文字符。

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

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

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

易用性

- 易用性:

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

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

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

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

正确性

- 正确性:

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

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

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

- 代码片段错误。

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

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

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

风险提示

- 风险提示:

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

内容合规

- 内容合规:

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

- 内容侵权。

问题描述

请勾选同意隐私声明

mindspore.ops.matrix_set_diag

mindspore.ops.matrix_set_diag(x, diagonal, k=0, align='RIGHT_LEFT')[源代码]

返回具有新的对角线值的批处理矩阵张量。 给定输入 x 和对角线 diagonal ,此操作返回与 x 具有相同形状和值的张量,但返回的张量除开最内层矩阵的对角线。这些值将被对角线中的值覆盖。如果某些对角线比 max_diag_len 短,则需要被填充。 其中 max_diag_len 指的是对角线的最长长度。 diagonal 的维度 shape[2] 必须等于对角线个数 num_diags k[1]k[0]+1diagonal 的维度 shape[1] 必须 等于最长对角线值 max_diag_len min(x.shape[2]+min(k[1],0),x.shape[1]+min(k[0],0)) 。 设 x 具有 r + 1[I,J,...,L,M,N] 。 当 k 是整数或 k[0]==k[1] 时,对角线 diagonal 具有形状 为 [I,J,...,L,max_diag_len] 。否则,它具有形状为 [I,J,...L,num_diags,max_diag_len]

参数:

  • x (Tensor) - 输入Tensor,其维度为 r+1 需要满足 r >=1

  • diagonal (Tensor) - 输入对角线Tensor,具有与 x 相同的数据类型。当 k 是整数或 k[0]==k[1] 时,其为维度 r ,否则,其维度 r + 1

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

  • align (str, optional) - 字符串,指定超对角线和次对角线的对齐方式。可选值:”RIGHT_LEFT”、”LEFT_RIGHT”、”LEFT_LEFT”、”RIGHT_RIGHT”。例如,”RIGHT_LEFT”表示将超对角线与右侧对齐(左侧填充行),将次对角线与左侧对齐(右侧填充行)。默认值:”RIGHT_LEFT”。

返回:

Tensor,与 x 的类型相同。

xr+1[IJ...MN] 。输出Tensor的维度为 r+1 ,为 [I,J,...,L,M,N]

异常:

  • TypeError - x 或者 diagonal 不为Tensor。

  • TypeError - xdiagonal 数据类型不同。

  • TypeError - k 的数据类型不为int32。

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

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

  • ValueError - x 的维度不大于等于2。

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

  • ValueError - 当 k 的大小为2时,k[1]小于k[0]。

  • ValueError - 对角线 diagonal 的维度与输入 x 的维度不匹配。

  • ValueError - 对角线 diagonal 的维度信息与输入 x 的维度信息不匹配。

  • ValueError - 对角线 diagonal 的维度 shape[2] 不等于与对角线个数 num_diags k[1]k[0]+1

  • ValueError - k 的取值不在 (x.shape[2],x.shape[1]) 范围内。

  • ValueError - 对角线 diagonal 的维度shape[-1] 不等于最长对角线长度 max_diag_len min(x.shape[2]+min(k[1],0),x.shape[1]+min(k[0],0))

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([[7, 7, 7, 7],
...                      [7, 7, 7, 7],
...                      [7, 7, 7, 7]]), mindspore.float32)
>>> diagonal = Tensor(np.array([[0, 9, 1],
...                             [6, 5, 8],
...                             [1, 2, 3],
...                             [4, 5, 0]]), mindspore.float32)
>>> k = Tensor(np.array([-1, 2]), mindspore.int32)
>>> align = 'RIGHT_LEFT'
>>> output = ops.matrix_set_diag(x, diagonal, k, align)
>>> print(output)
[[1. 6. 9. 7.]
 [4. 2. 5. 1.]
 [7. 5. 3. 8.]]
>>> print(output.shape)
(3, 4)