mindspore.nn.Triu

class mindspore.nn.Triu[源代码]

返回一个Tensor,指定主对角线以下的元素被置为0。

将矩阵元素沿主对角线分为上三角和下三角(包含对角线)。

参数 k 控制对角线的选择。若 k 为0,则沿主对角线分割并保留上三角所有元素。若 k 为正值,则沿主对角线向上选择对角线 k ,并保留上三角所有元素。若 k 为负值,则沿主对角线向下选择对角线 k ,并保留上三角所有元素。

输入:
  • x (Tensor) - Triu的输入,任意维度的Tensor,其数据类型为数值型。

  • k (int) - 对角线的索引。默认值:0。

输出:

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

异常:
  • TypeError - k 不是int。

  • ValueError - x 的shape长度小于1。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([[ 1,  2,  3,  4],
...                      [ 5,  6,  7,  8],
...                      [10, 11, 12, 13],
...                      [14, 15, 16, 17]]))
>>> triu = nn.Triu()
>>> result = triu(x)
>>> print(result)
[[ 1  2  3  4]
 [ 0  6  7  8]
 [ 0  0 12 13]
 [ 0  0  0 17]]
>>> x = Tensor(np.array([[ 1,  2,  3,  4],
...                      [ 5,  6,  7,  8],
...                      [10, 11, 12, 13],
...                      [14, 15, 16, 17]]))
>>> triu = nn.Triu()
>>> result = triu(x, 1)
>>> print(result)
[[ 0  2  3  4]
 [ 0  0  7  8]
 [ 0  0  0 13]
 [ 0  0  0  0]]
>>> x = Tensor(np.array([[ 1,  2,  3,  4],
...                      [ 5,  6,  7,  8],
...                      [10, 11, 12, 13],
...                      [14, 15, 16, 17]]))
>>> triu = nn.Triu()
>>> result = triu(x, 2)
>>> print(result)
[[ 0  0  3  4]
 [ 0  0  0  8]
 [ 0  0  0  0]
 [ 0  0  0  0]]
>>> x = Tensor(np.array([[ 1,  2,  3,  4],
...                      [ 5,  6,  7,  8],
...                      [10, 11, 12, 13],
...                      [14, 15, 16, 17]]))
>>> triu = nn.Triu()
>>> result = triu(x, -1)
>>> print(result)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 0 11 12 13]
 [ 0  0 16 17]]