torch.histogramdd ¶
Torch 的二维直方图
- torch.histogramdd(input, bins, *, range=None, weight=None, density=False, out=None) -> (张量, 张量数组) ¶
计算张量中值的多元直方图。
将输入张量内部维度大小为 N 的元素解释为一组 N 维点。将每个点映射到一组 N 维箱中,并返回每个箱中点的数量(或总权重)。
input
必须是一个至少有 2 维的张量。如果输入的形状为(M,N),则其 M 行中的每一行定义了 N 维空间中的一个点。如果输入有三个或更多维度,则除了最后一个维度之外的所有维度都将被展平。每个维度都与自己的严格递增的箱边序列独立关联。箱边可以通过传递一个 1D 张量的序列来显式指定。或者,可以通过传递指定每个维度中相等宽度箱数的整数序列来自动构建箱边。
- 对于输入中的每个 N 维点:
- 每个坐标独立地分配到各个边界框中
对应其维度
- 将边界框的结果合并以识别 N 维边界框(如果有)
点落在这个边界框中
如果点落在某个区间内,该区间的计数(或总重量)将增加
未落入任何区间的点不会对输出做出贡献
bins
可以是一个 N 维 1D 张量序列、一个 N 个整数的序列,或者一个单独的整数。如果
bins
是一个 N 维 1D 张量序列,它明确指定了 N 个区间边界的序列。每个 1D 张量应包含一个严格递增的序列,且至少包含一个元素。K 个区间边界的序列定义了 K-1 个区间,明确指定了所有区间的左右边界。每个区间都不包含其左边界。只有最右侧的区间包含其右边界。如果
bins
是一个整数序列,它指定了每个维度中相等宽度的 bins 数量。默认情况下,每个维度中左右 bin 边缘由对应维度的输入张量的最小和最大元素确定。可以通过range
参数手动指定每个维度中左右 bin 边缘。如果
bins
是一个整数,它指定了所有维度的相等宽度 bins 数量。注意
参见
torch.histogram()
,它专门计算 1D 直方图。虽然torch.histogramdd()
从input
的形状推断其 bins 和 bins 值的维度性,但torch.histogram()
接受并展平任何形状的input
。- 参数:
input (Tensor) – 输入张量。
bins – Tensor[],int[]或 int。如果 Tensor[],定义 bin 边缘的序列。如果 int[],定义每个维度中的相等宽度 bins 数量。如果 int,定义所有维度的相等宽度 bins 数量。
- 关键字参数:
range(Python 浮点数序列)- 定义每个维度中每个箱的左右边界。
weight(张量)- 默认情况下,输入中的每个值权重为 1。如果传递了权重张量,则输入中的每个 N 维坐标将向其箱的结果贡献其关联的权重。权重张量应与
input
张量具有相同的形状,除了其最内层维度 N。density(布尔值)- 如果为 False(默认),则结果将包含每个箱中的计数(或总权重)。如果为 True,则每个计数(权重)除以总计数(总权重),然后除以其关联箱的体积。
- 返回值:
N 维张量包含直方图值。bin_edges(Tensor[]):包含箱边界的 N 个 1 维张量序列。
- 返回类型:
历史张量(Tensor)
- 示例::
>>> 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])))