最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyTorch中cdist和sum函數(shù)使用示例詳解

 更新時間:2025年05月22日 15:08:43   作者:點(diǎn)云SLAM  
torch.cdist是PyTorch中用于計算**兩個張量之間的成對距離(pairwise distance)**的函數(shù),常用于點(diǎn)云處理、圖神經(jīng)網(wǎng)絡(luò)、相似性度量等場景,本文給大家介紹PyTorch中cdist和sum函數(shù)使用,感興趣的朋友一起看看吧

torch.cdist 是 PyTorch 中用于計算**兩個張量之間的成對距離(pairwise distance)**的函數(shù),常用于點(diǎn)云處理、圖神經(jīng)網(wǎng)絡(luò)、相似性度量等場景。

基本語法

torch.cdist(x1, x2, p=2.0)

參數(shù)說明:

參數(shù)說明
x1一個形狀為 [B, M, D] 或 [M, D] 的張量,表示一組點(diǎn)。
x2一個形狀為 [B, N, D] 或 [N, D] 的張量,表示另一組點(diǎn)。
p距離范數(shù),默認(rèn) p=2.0 表示歐幾里得距離(L2 范數(shù)),也可以設(shè)為 1.0(曼哈頓距離),或其他值。

輸出

輸出是一個張量,形狀為:

  • 如果 x1.shape = [M, D]x2.shape = [N, D],則輸出形狀為 [M, N];
  • 每個 (i, j) 位置表示 x1[i]x2[j] 之間的距離。

示例

1. 簡單的 2D 歐幾里得距離

import torch
x1 = torch.tensor([[0.0, 0.0], [1.0, 0.0]])  # 2個點(diǎn)
x2 = torch.tensor([[0.0, 1.0], [1.0, 1.0]])  # 2個點(diǎn)
dist = torch.cdist(x1, x2, p=2)
print(dist)

輸出為:

tensor([[1.0000, 1.4142],
        [1.4142, 1.0000]])

即:

  • x1[0] 與 x2[0] 的距離為 1;
  • x1[0] 與 x2[1] 的距離為 sqrt(2),等等。

2. 批量形式(3D Tensor)

x1 = torch.rand(2, 5, 3)  # batch=2, 每組5個3D點(diǎn)
x2 = torch.rand(2, 4, 3)  # batch=2, 每組4個3D點(diǎn)
out = torch.cdist(x1, x2)  # 輸出形狀為 [2, 5, 4]

3. 使用不同范數(shù)

torch.cdist(x1, x2, p=1)   # 曼哈頓距離
torch.cdist(x1, x2, p=2)   # 歐幾里得距離(默認(rèn))
torch.cdist(x1, x2, p=inf) # 最大維度差

注意事項

  • x1 和 x2 的最后一維(特征維度)必須相同。
  • p=2 時效率最高,其他范數(shù)可能會慢一些。
  • 如果兩個張量都很大,這個操作可能非常耗顯存。

應(yīng)用場景舉例

  • 點(diǎn)云之間距離計算(如 ISS、FPFH、ICP)
  • 匹配點(diǎn)對的距離圖構(gòu)建
  • KNN 查詢
  • 圖構(gòu)造(鄰接矩陣、相容性矩陣)

torch.sum 是 PyTorch 中用于對張量元素進(jìn)行求和的函數(shù),功能類似于 NumPy 中的 np.sum,但可以更靈活地選擇維度進(jìn)行操作。

基本用法

torch.sum(input, dim=None, keepdim=False)

參數(shù)說明:

  • input:要進(jìn)行求和的張量;
  • dim(可選):指定在哪個維度上進(jìn)行求和;
  • keepdim(可選):布爾值,是否保留被求和的維度(默認(rèn)不保留)。

示例講解

示例 1:對所有元素求和

x = torch.tensor([[1, 2], [3, 4]])
torch.sum(x)
# 輸出:tensor(10)

示例 2:指定維度求和

x = torch.tensor([[1, 2], [3, 4]])
torch.sum(x, dim=0)  # 按列求和:1+3, 2+4
# 輸出:tensor([4, 6])
torch.sum(x, dim=1)  # 按行求和:1+2, 3+4
# 輸出:tensor([3, 7])

示例 3:保留維度

x = torch.tensor([[1, 2], [3, 4]])
torch.sum(x, dim=1, keepdim=True)
# 輸出:tensor([[3], [7]])

到此這篇關(guān)于PyTorch中cdist和sum函數(shù)使用示例詳解的文章就介紹到這了,更多相關(guān)PyTorch cdist和sum函數(shù)使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

伊川县| 连州市| 龙南县| 阜康市| 玉龙| 景谷| 甘德县| 临桂县| 新巴尔虎右旗| 滦南县| 山阳县| 建始县| 胶南市| 榆林市| 新建县| 石台县| 潞西市| 台州市| 荔波县| 苏尼特左旗| 张北县| 淮滨县| 永靖县| 吴忠市| 田东县| 饶阳县| 江西省| 思茅市| 旅游| 高邮市| 安仁县| 昌宁县| 尚义县| 慈溪市| 潍坊市| 仁化县| 哈密市| 新和县| 大石桥市| 宜君县| 慈溪市|