快捷方式

torch.histogramdd

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

计算张量中值的 multi-dimensional 直方图。

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

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

每个维度都与其自己严格递增的 bin 边界序列独立关联。可以通过传递 1D 张量序列来显式指定 bin 边界。或者,可以通过传递整数序列来自动构造 bin 边界,这些整数指定每个维度中等宽 bin 的数量。

对于输入中的每个 N 维点
  • 它的每个坐标都根据其维度独立地分配到对应的区间边界。

    对应于其维度

  • 区间分配结果被组合以识别点落入的 N 维区间(如果有)。

    落入的区间

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

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

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

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

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

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

注意

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

参数
  • input (张量) – 输入张量。

  • bins – 张量[],整数[] 或整数。如果为张量[],则定义区间边界的序列。如果为整数[],则定义每个维度中等宽区间的数量。如果为整数,则定义所有维度中等宽区间的数量。

关键字参数
  • range (浮点数序列) – 定义每个维度中最左侧和最右侧的区间边界。

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

  • density (布尔值) – 如果为 False(默认值),则结果将包含每个区间中的计数(或总权重)。如果为 True,则每个计数(权重)除以总计数(总权重),然后除以其关联区间的体积。

返回值

包含直方图值的 N 维张量。bin_edges(张量[]):包含区间边界的 N 个一维张量的序列。

返回类型

hist (张量)

示例:
>>> 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],
...                   range=[0., 1., 0., 1.], density=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])))

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源