PyTorch中cdist和sum函數使用詳解

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


基本語法

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

參數說明:

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

輸出

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

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

示例

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

import torchx1 = torch.tensor([[0.0, 0.0], [1.0, 0.0]])  # 2個點
x2 = torch.tensor([[0.0, 1.0], [1.0, 1.0]])  # 2個點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點
x2 = torch.rand(2, 4, 3)  # batch=2, 每組4個3D點out = torch.cdist(x1, x2)  # 輸出形狀為 [2, 5, 4]

3. 使用不同范數

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

注意事項

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

應用場景舉例

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

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


基本用法

torch.sum(input, dim=None, keepdim=False)
參數說明:
  • input:要進行求和的張量;
  • dim(可選):指定在哪個維度上進行求和;
  • keepdim(可選):布爾值,是否保留被求和的維度(默認不保留)。

示例講解

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80837.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智能視覺檢測技術:制造業質量管控的“隱形守護者”

在工業4.0浪潮的推動下,制造業正經歷一場以智能化為核心的變革。傳統人工質檢模式因效率低、誤差率高、成本高昂等問題,逐漸難以滿足現代生產對高精度、高速度的需求。智能視覺檢測技術作為人工智能與機器視覺融合的產物,正成為制造業質量管控…

水滸后傳-暹羅國建立新國家的故事

第一節《怒海余生》 李俊率領殘部穿越臺風海域,在暹羅灣遭遇葡萄牙艦隊突襲。童猛為掩護船隊突圍,駕駛火船與敵艦同歸于盡,留下最后的忠義絕唱。 第二節《血染王城》 李俊與暹羅舊貴族勢力在曼谷河畔展開決戰。中原陣法與暹羅象兵碰撞出驚心…

1.portainer

容器可視化工具 商業版Business、社區版Community docker容器部署portainer,對外暴露端口9443是一個自簽名的證書端口。還有另外一個暴露的端口8000。 volume 要想看得到,需要通過 portainer可視化界面看到volume,就必須使用: d…

使用Starrocks制作拉鏈表

5月1日向ods_order_info插入3條數據: CREATE TABLE ods_order_info(dt string,id string COMMENT 訂單編號,total_amount decimal(10,2) COMMENT 訂單金額 ) PRIMARY KEY(dt, id) PARTITION BY (dt) DISTRIBUTED BY HASH(id) PROPERTIES ( "replication_num&q…

Linux下Docker使用阿里云鏡像加速器

在中國大陸環境中配置 Docker 使用阿里云鏡像加速器,并確保通過 Clash 代理訪問 Docker Hub 我這里用的Debian12。 步驟 1:獲取阿里云鏡像加速器地址 登錄阿里云容器鏡像服務控制臺:(qinyang.wang) 網址:阿里云登錄 - 歡迎登錄阿…

Electron 后臺常駐服務實現(托盤 + 開機自啟)

基于 electron-vite-vue 項目結構 本篇將詳細介紹如何為 Electron 應用實現后臺常駐運行,包括: ? 創建系統托盤圖標(Tray)? 支持點擊托盤菜單控制窗口顯示/退出? 實現開機自啟功能(Auto Launch) &#…

opencv的直方圖

理解并運用 OpenCV 中的圖像直方圖 📊🖼? 圖像直方圖是計算機視覺和圖像處理中一種基本且強大的工具,它提供了圖像像素強度分布的圖形化表示。OpenCV 作為一個全面的計算機視覺庫,內置了計算和可視化直方圖的強大功能。本文將深…

Linux 內核探秘:從零構建 GPIO 設備驅動程序實戰指南

在嵌入式系統開發領域,GPIO(通用輸入 / 輸出)作為硬件與軟件交互的橋梁,是實現設備控制與數據采集的基礎。編寫高效、穩定的 GPIO 設備驅動程序,對于發揮硬件性能至關重要。本文將深入剖析 Linux 內核中 GPIO 驅動開發…

嵌入式單片機中STM32F1演示寄存器控制方法

該文以STM32F103C8T6為示例,演示如何使用操作寄存器的方法點亮(關閉LED燈),并講解了如何調試,以及使用宏定義。 第一:操作寄存器點亮LED燈。 (1)首先我們的目的是操作板子上的LED2燈,對其實現點亮和關閉操作。打開STM32F103C8T6的原理圖,找到LED2的位置。 可以看到…

牛客網 NC16407 題解:托米航空公司的座位安排問題

牛客網 NC16407 題解:托米航空公司的座位安排問題 題目分析 解題思路 本題可以采用深度優先搜索(DFS)來解決: 從左上角開始,按行優先順序遍歷每個座位對于每個座位,有兩種選擇: 選擇該座位(如果滿足條件…

智慧展館數字孿生平臺

2022年進博會上,國家會展中心憑借“數字孿生機器人調度平臺”驚艷全球,實現人機協同、虛實聯動的智慧運營;2023年天府農博園通過“BIMIoT”技術,貫穿展館全生命周期管理,成為農業會展的數字化標桿。這些案例背后&#…

胡說八道1---豆包問答總結

用戶提問 1 指令:25 - - [21/May/2025:01:35:45 0000] “POST /prod-api/system/base/getList HTTP/1.1” 405 559 “http://192.168.1.109:16380/login” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 …

C# AOP編程

AOP(面向切片編程的概念我這里就不介紹了,這里先介紹一下C#中的AOP編程框架。 1.AOP的分類 .net下支持AOP的框架很多,搜了一下有:PostSharp、AspectInjector、Fody 、Castle Windsor、Spring.NET、Ninject、Unity等,實現的方式主要…

linux編譯安裝srs

下載編譯運行 git clone https://github.com/ossrs/srs.git cd srs/trunk ./configure --h265on make需要安裝 yum install -y patch yum install -y unzip yum install -y tcl編譯完成后即可啟動SRS # 啟動 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/s…

EtherNet/IP機柜內解決方案在醫療控制中心智能化的應用潛能和方向分析

引言 在數智化轉型浪潮席卷各行各業的今天,醫療領域同樣面臨著提升運營效率、改善患者體驗和加強系統可靠性的多重挑戰。Rockwell Automation于2025年5月20日推出的EtherNet/IP機柜內解決方案,為醫療中心的自動化升級提供了一種創新路徑。本報告將深入分析這一解決方案的核心…

大模型下載到本地

一、huggingface 方式一 from huggingface_hub import snapshot_downloadlocal_dir "./origin" model_name "Qwen/Qwen2.5-1.5B"# snapshot_download(repo_idmodel_name, cache_dirlocal_dir) model_dir snapshot_download(model_name,cache_dirlocal…

【C++】vector容器實現

目錄 一、vector的成員變量 二、vector手動實現 (1)構造 (2)析構 (3)尾插 (4)擴容 (5)[ ]運算符重載 5.1 迭代器的實現: (6&…

PostgreSQL日常維護

目錄 一、PostgreSQL 概述 二、基本使用 (一)登錄數據庫 (二)數據庫操作 1. 列出數據庫 2. 創建數據庫 3. 刪除數據庫 4. 切換數據庫 5. 查看數據庫大小 (三)數據表操作 1. 列出表 2. 創建表 …

廣東省省考備考(第十六天5.21)—言語:語句排序題(聽課后強化)

錯題 解析 對比選項,確定首句。①句介紹目前人類可以利用一些技術手段進入元宇宙,憑借網絡重新定義自己,體驗一種全新的生活,②句介紹對于多數人來說,首先要弄清楚什么是元宇宙,③句介紹元宇宙是指超越現實…

高并發架構設計之限流

一、引言 再強大的系統,也怕流量短事件內集中爆發,就像銀行怕擠兌一樣,所以,高并發另一個必不可少的模塊就是限流。限流是一種通過控制請求的速率或數量來保護系統免受過載的技術。流控的精髓是限制單位時間內的請求量&#xff0…