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])))