torch.histogramdd¶
- torch.histogramdd(input, bins, *, range=None, weight=None, density=False, out=None) -> (Tensor, Tensor[])¶
计算张量值的多维直方图。
将输入张量中内层维度大小为 N 的元素解释为 N 维点集。将每个点映射到 N 维 bin 中,并返回每个 bin 中的点数(或总权重)。
input
必须是一个至少有 2 个维度的张量。如果 input 的形状是 (M, N),则其 M 行中的每一行定义了 N 维空间中的一个点。如果 input 有三个或更多维度,除了最后一个维度外,其他维度都会被展平。每个维度都独立地与自身严格递增的 bin 边界序列相关联。可以通过传递一系列一维张量来显式指定 bin 边界。或者,可以通过传递一系列整数来自动构建 bin 边界,这些整数指定了每个维度中等宽 bin 的数量。
- 对于 input 中的每个 N 维点
- 其每个坐标都在对应的 bin 边界内独立地被分入 bin
对应于其维度
- 将分 bin 结果结合起来,以确定点落入哪个 N 维 bin(如果存在)
点落入哪个 bin
如果点落入某个 bin,则该 bin 的计数(或总权重)会增加
未落入任何 bin 的点不会对输出产生贡献
bins
可以是 N 个一维张量的序列、N 个整数的序列或一个整数。如果
bins
是 N 个一维张量的序列,它将显式指定 N 个 bin 边界序列。每个一维张量应包含一个严格递增的序列,且至少有一个元素。包含 K 个 bin 边界的序列定义了 K-1 个 bin,显式指定了所有 bin 的左边界和右边界。每个 bin 都排除其左边界。只有最右边的 bin 包含其右边界。如果
bins
是 N 个整数的序列,它指定了每个维度中等宽 bin 的数量。默认情况下,每个维度中最左边和最右边的 bin 边界由输入张量在对应维度中的最小和最大元素确定。可以提供range
参数来手动指定每个维度中最左边和最右边的 bin 边界。如果
bins
是一个整数,它指定了所有维度中等宽 bin 的数量。注意
另请参阅
torch.histogram()
,它专门用于计算一维直方图。虽然torch.histogramdd()
从input
的形状推断其 bin 和分 bin 值的维度,但torch.histogram()
接受并展平任何形状的input
。- 参数
input (Tensor) – 输入张量。
bins – Tensor[]、int[] 或 int。如果是 Tensor[],则定义 bin 边界序列。如果是 int[],则定义每个维度中等宽 bin 的数量。如果是 int,则定义所有维度中等宽 bin 的数量。
- 关键字参数
- 返回
N 维张量,包含直方图的值。bin_edges(Tensor[]): 包含 bin 边界的 N 个一维 Tensor 序列。
- 返回类型
hist (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])))