torch.unique_consecutive

torch.unique_consecutive(*args, **kwargs)

删除每组连续相同元素中的除第一个以外的所有元素。

注意

此函数与torch.unique()的不同之处在于,它只消除连续的重复值。这种语义类似于C++中的std::unique

参数
  • 输入 (Tensor) – 输入的张量

  • return_inverse (bool) – 是否还返回原始输入中各元素在返回的唯一列表中的位置索引。

  • return_counts (bool) – 是否为每个唯一的元素返回其计数值。

  • dim (int) – 应用于 unique 操作的维度。如果为 None,则返回展平输入后的唯一值。默认值:None

返回值

包含一个张量或张量元组

  • 输出 (Tensor):包含唯一标量元素的输出列表。

  • inverse_indices (Tensor):(可选)如果 return_inverse 为 True,则会额外返回一个与输入形状相同的张量,表示原始输入中的元素在输出中的位置;否则,此函数只会返回一个张量。

  • counts (Tensor):(可选)当 return_counts 为 True 时,会额外返回一个与输出形状相同的张量(如果指定了 dim,则为 output.size(dim)),表示每个唯一值或张量的出现次数。

返回类型

(Tensor, Tensor (可选), Tensor (可选))

示例:

>>> x = torch.tensor([1, 1, 2, 2, 3, 1, 1, 2])
>>> output = torch.unique_consecutive(x)
>>> output
tensor([1, 2, 3, 1, 2])

>>> output, inverse_indices = torch.unique_consecutive(x, return_inverse=True)
>>> output
tensor([1, 2, 3, 1, 2])
>>> inverse_indices
tensor([0, 0, 1, 1, 2, 3, 3, 4])

>>> output, counts = torch.unique_consecutive(x, return_counts=True)
>>> output
tensor([1, 2, 3, 1, 2])
>>> counts
tensor([2, 2, 1, 2, 1])
本页目录