文档反馈

问题文档片段

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

提交类型
issue

有点复杂...

找人问问吧。

PR

小问题,全程线上修改...

一键搞定!

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

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

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

- 英文中包含中文字符。

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

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

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

易用性

- 易用性:

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

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

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

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

正确性

- 正确性:

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

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

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

- 代码片段错误。

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

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

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

风险提示

- 风险提示:

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

内容合规

- 内容合规:

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

- 内容侵权。

请选择问题类型

问题描述

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

mindspore.ops.MatrixSetDiagV3

查看源文件
class mindspore.ops.MatrixSetDiagV3(align='RIGHT_LEFT')[源代码]

更新批处理矩阵对角线的值。 给定输入 x 和对角线 diagonal ,此操作返回一个Tensor。该Tensor最内层矩阵的对角线的值将被 diagonal 中的值替换。

如果某些对角线比 max_diag_len 短,则需要被填充,其中 max_diag_len 指对角线的最长长度。 diagonal 的维度 shape[2] 必须等于对角线个数 num_diagsnum_diags=k[1]k[0]+1diagonal 的维度 shape[1] 必须等于最长对角线值 max_diag_lenmax_diag_len=min(x.shape[2]+min(k[1],0),x.shape[1]+min(k[0],0))

x 是一个n维Tensor,shape为: (d1,d2,...,dn2,dn1,dn) 。 当 k 是一个整数或 k[0]==k[1] 时, diagonal 为n-1维Tensor,shape为 (d1,d2,...,dn2,max_diag_len) 。 否则, diagonalx 维度一致,其shape为 (d1,d2,...,dn2,num_diags,max_diag_len)

警告

这是一个实验性API,后续可能修改或删除。

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

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

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

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

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

输入:
  • x (Tensor) - n维Tensor,其中 n>=2

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

  • k (Tensor) - int32类型的Tensor。对角线偏移量。正值表示超对角线,0表示主对角线,负值表示次对角线。 k 可以是单个整数(对于单个对角线)或一对整数,分别指定矩阵带的上界和下界,且 k[0] 不得大于 k[1] 。 其值必须在 (x.shape[2],x.shape[1]) 中。采用图模式时,输入 k 必须是常量Tensor。

输出:

Tensor,数据类型和shape与 x 相同。

异常:
  • TypeError - 若任一输入不是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 的shape与输入 x 不匹配。

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

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

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

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> 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)
>>> matrix_set_diag_v3 = ops.MatrixSetDiagV3(align='RIGHT_LEFT')
>>> output = matrix_set_diag_v3(x, diagonal, k)
>>> print(output)
[[1. 6. 9. 7.]
 [4. 2. 5. 1.]
 [7. 5. 3. 8.]]
>>> print(output.shape)
(3, 4)