Shortcuts

torch.triu

torch.triu(input, diagonal=0, *, out=None) 张量

返回矩阵(2-D 张量)或矩阵批次的上三角部分,结果张量 out 的其他元素被设置为 0。

矩阵的上三角部分定义为对角线及其上方的元素。

参数 diagonal 控制要考虑的对角线。如果 diagonal = 0,则保留主对角线及以上的所有元素。正值会排除主对角线上方的相同数量的对角线,类似地,负值会包含主对角线下方的相同数量的对角线。主对角线是索引集 {(i,i)}\lbrace (i, i) \rbrace 对于 i[0,min{d1,d2}1]i \in [0, \min\{d_{1}, d_{2}\} - 1] 其中 d1,d2d_{1}, d_{2} 是矩阵的维度。

Parameters
  • 输入 (张量) – 输入张量。

  • 对角线 (int, 可选) – 要考虑的对角线

Keyword Arguments

输出 (张量, 可选) – 输出张量。

示例:

>>> a = torch.randn(3, 3)
>>> a
tensor([[ 0.2309,  0.5207,  2.0049],
        [ 0.2072, -1.0680,  0.6602],
        [ 0.3480, -0.5211, -0.4573]])
>>> torch.triu(a)
tensor([[ 0.2309,  0.5207,  2.0049],
        [ 0.0000, -1.0680,  0.6602],
        [ 0.0000,  0.0000, -0.4573]])
>>> torch.triu(a, diagonal=1)
tensor([[ 0.0000,  0.5207,  2.0049],
        [ 0.0000,  0.0000,  0.6602],
        [ 0.0000,  0.0000,  0.0000]])
>>> torch.triu(a, diagonal=-1)
tensor([[ 0.2309,  0.5207,  2.0049],
        [ 0.2072, -1.0680,  0.6602],
        [ 0.0000, -0.5211, -0.4573]])

>>> b = torch.randn(4, 6)
>>> b
tensor([[ 0.5876, -0.0794, -1.8373,  0.6654,  0.2604,  1.5235],
        [-0.2447,  0.9556, -1.2919,  1.3378, -0.1768, -1.0857],
        [ 0.4333,  0.3146,  0.6576, -1.0432,  0.9348, -0.4410],
        [-0.9888,  1.0679, -1.3337, -1.6556,  0.4798,  0.2830]])
>>> torch.triu(b, diagonal=1)
tensor([[ 0.0000, -0.0794, -1.8373,  0.6654,  0.2604,  1.5235],
        [ 0.0000,  0.0000, -1.2919,  1.3378, -0.1768, -1.0857],
        [ 0.0000,  0.0000,  0.0000, -1.0432,  0.9348, -0.4410],
        [ 0.0000,  0.0000,  0.0000,  0.0000,  0.4798,  0.2830]])
>>> torch.triu(b, diagonal=-1)
tensor([[ 0.5876, -0.0794, -1.8373,  0.6654,  0.2604,  1.5235],
        [-0.2447,  0.9556, -1.2919,  1.3378, -0.1768, -1.0857],
        [ 0.0000,  0.3146,  0.6576, -1.0432,  0.9348, -0.4410],
        [ 0.0000,  0.0000, -1.3337, -1.6556,  0.4798,  0.2830]])