torch.tril_indices

torch.tril_indices(row, col, offset=0, *, dtype=torch.long, device='cpu', layout=torch.strided)) Tensor

返回一个row-by-col 矩阵下三角部分的所有索引在2-by-N张量中的坐标。第一行包含所有索引的行坐标,第二行包含列坐标。索引是先按照行再按照列进行排序。

矩阵的下三角部分是指对角线及其下方的所有元素。

参数 offset 控制要考虑哪条对角线。如果 offset = 0,则保留主对角线及其以下的所有元素。正值表示包括主对角线上方同样数量的对角线,负值则表示排除主对角线下方同样数量的对角线。主对角线上的索引集合是 $\lbrace (i, i) \rbrace$ ,其中$i \in [0, \min\{d_{1}, d_{2}\} - 1]$$d_{1}, d_{2}$ 是矩阵的维度。

注意

在 CUDA 上运行时,row * col 必须小于 $2^{59}$ 以防止计算过程中发生溢出。

参数
  • row (int) – 表示二维矩阵的行数。

  • col (int) - 2D矩阵的列数。

  • offset (int) - 偏移量,从主对角线开始计算。默认值:如果没有指定,默认为 0。

关键字参数
  • dtype (torch.dtype, 可选) - 返回的张量的数据类型。默认值:如果为 None,则使用 torch.long

  • device (torch.device, 可选) – 返回张量所需的设备。默认情况下,如果未指定 None,则使用当前的默认张量类型设备(参见torch.set_default_device())。对于 CPU 张量类型,默认为 CPU 设备;对于 CUDA 张量类型,则为当前的 CUDA 设备。

  • 布局 (torch.layout,可选) – 当前仅支持 torch.strided

示例:

>>> a = torch.tril_indices(3, 3)
>>> a
tensor([[0, 1, 1, 2, 2, 2],
        [0, 0, 1, 0, 1, 2]])

>>> a = torch.tril_indices(4, 3, -1)
>>> a
tensor([[1, 2, 2, 3, 3, 3],
        [0, 0, 1, 0, 1, 2]])

>>> a = torch.tril_indices(4, 3, 1)
>>> a
tensor([[0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3],
        [0, 1, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
本页目录