Shortcuts

torch.histogramdd

torch.histogramdd(input, bins, *, range=None, weight=None, density=False, out=None) -> (Tensor, Tensor[])

计算张量中值的多维直方图。

解释输入张量的元素,其最内层维度的大小为N,作为一组N维点的集合。将每个点映射到一组N维的箱子中,并返回每个箱子中的点数(或总权重)。

input 必须是一个至少有2维的张量。 如果输入的形状是(M, N),它的每一行M定义了N维空间中的一个点。 如果输入有三维或更多维,除了最后一维之外的所有维度都会被展平。

每个维度都独立地与其自身的严格递增的箱边缘序列相关联。箱边缘可以通过传递一个一维张量序列来显式指定。或者,可以通过传递一个整数序列来自动构建箱边缘,该序列指定了每个维度中等宽箱的数量。

For each N-dimensional point in input:
  • Each of its coordinates is binned independently among the bin edges

    对应于其维度

  • Binning results are combined to identify the N-dimensional bin (if any)

    点落入的区域

  • 如果点落入一个区间,该区间的计数(或总权重)将增加

  • 未落入任何区间的点不会对输出产生贡献

bins 可以是一个包含 N 个一维张量的序列,一个包含 N 个整数的序列,或者一个单独的整数。

如果 bins 是一个包含 N 个一维张量的序列,它明确指定了 N 个序列的边界。每个一维张量应包含一个严格递增的序列,且至少有一个元素。一个包含 K 个边界值的序列定义了 K-1 个区间,明确指定了所有区间的左右边界。每个区间在其左边界上是排他的。只有最右边的区间在其右边界上是包含的。

如果 bins 是一个包含 N 个整数的序列,它指定每个维度中相等宽度箱的数量。默认情况下,每个维度中最左边和最右边的箱边缘由输入张量在相应维度中的最小和最大元素决定。可以使用 range 参数手动指定每个维度中最左边和最右边的箱边缘。

如果 bins 是一个整数,它指定所有维度中等宽的箱数。

注意

另请参阅 torch.histogram(),它专门计算一维直方图。 虽然 torch.histogramdd()input 的形状推断其箱子和分箱值的维度,但 torch.histogram() 接受并展平任何形状的 input

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

  • bins – 张量[], 整数[], 或 整数. 如果 张量[], 定义了每个维度的等宽箱数。 如果 整数, 定义了所有维度的等宽箱数。

Keyword Arguments
  • 范围 (序列浮点数) – 定义每个维度中最左和最右的箱边缘。

  • 权重 (张量) – 默认情况下,输入中的每个值的权重为1。如果传递了权重张量,则输入中的每个N维坐标都会将其关联的权重贡献给其所在箱的结果。权重张量的形状应与input张量相同,但不包括其最内层的维度N。

  • 密度 (bool) – 如果为False(默认),结果将包含每个箱子中的计数(或总权重)。如果为True,每个计数(权重)将除以总计数(总权重),然后除以其相关箱子的体积。

Returns

N维张量,包含直方图的值。 bin_edges(Tensor[]): N个1维张量的序列,包含箱边缘。

Return type

hist (张量)

Example::
>>> torch.histogramdd(torch.tensor([[0., 1.], [1., 0.], [2., 0.], [2., 2.]]), bins=[3, 3],
...                   weight=torch.tensor([1., 2., 4., 8.]))
    torch.return_types.histogramdd(
        hist=tensor([[0., 1., 0.],
                     [2., 0., 0.],
                     [4., 0., 8.]]),
        bin_edges=(tensor([0.0000, 0.6667, 1.3333, 2.0000]),
                   tensor([0.0000, 0.6667, 1.3333, 2.0000])))
>>> torch.histogramdd(torch.tensor([[0., 0.], [1., 1.], [2., 2.]]), bins=[2, 2],
...                   范围=[0., 1., 0., 1.], 密度=True)
    torch.return_types.histogramdd(
       hist=tensor([[2., 0.],
                    [0., 2.]]),
       bin_edges=(tensor([0.0000, 0.5000, 1.0000]),
                  tensor([0.0000, 0.5000, 1.0000])))