PyTorch常用的簡單數學運算

一、基礎算術運算

1. 逐元素運算

a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])# 加減乘除
a + b  # [5, 7, 9]
a - b  # [-3, -3, -3]
a * b  # [4, 10, 18]
a / b  # [0.25, 0.4, 0.5]# 冪運算、平方根
a ** 2  # [1, 4, 9]
torch.sqrt(a)  # [1.0, 1.414, 1.732]

2. 標量運算

a = torch.tensor([1, 2, 3])a + 2  # [3, 4, 5]
a * 3  # [3, 6, 9]

二、矩陣運算

?1. 矩陣乘法

a = torch.rand(2, 3)  # [2, 3]
b = torch.rand(3, 4)  # [3, 4]# 矩陣乘法
a @ b  # [2, 4],等價于 torch.matmul(a, b)

?2. 批量矩陣乘法

a = torch.rand(10, 2, 3)  # [10, 2, 3]
b = torch.rand(10, 3, 4)  # [10, 3, 4]# 批量矩陣乘法(每個批次獨立計算)
torch.bmm(a,b) # [10, 2, 4]

?總結

輸入形狀

輸出形狀

torch.bmm(A, B)

[b, m, k],?[b, k, n]

[b, m, n]

每個批次獨立進行矩陣乘法

torch.bmm(A, B)

[b, m, k],?[1, k, n]

[b, m, n]

廣播批次維度后進行矩陣乘法

torch.matmul(A, B)

[m, k],?[k, n]

[m, n]

標準矩陣乘法

torch.matmul(A, B)

[b, m, k],?[k, n]

[b, m, n]

廣播后進行矩陣乘法

?3. 點積(內積)

a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])torch.dot(a, b)  # 32(1*4 + 2*5 + 3*6)

?三、降維運算

1. 求和、均值、最大值、最小值

a = torch.rand(3, 4)torch.sum(a)          # 標量,所有元素和
torch.sum(a, dim=0)   # [4],按行求和
torch.mean(a, dim=1)  # [3],按列求均值
torch.max(a, dim=0)   # 返回 (values, indices) 元組
torch.min(a, dim=1)   # 返回 (values, indices) 元組

?2. 范數計算

a = torch.tensor([3.0, 4.0])torch.norm(a, p=2)  # 5.0(L2范數)
torch.norm(a, p=1)  # 7.0(L1范數)

? ? 在數學和機器學習中,范數(Norm)?是衡量向量 “大小” 或 “長度” 的一種函數,它為向量空間中的每個向量賦予一個非負實數,表示其 “規模”。范數是歐幾里得距離的推廣,在深度學習中常用于損失函數設計、正則化、優化算法等場景。

(1)、所有范數都滿足以下 3 個基本性質:

  1. 非負性:對于任意向量?x,范數?∥x∥≥0,且僅當?x?是零向量時,范數為 0。

  2. 齊次性:對于任意標量?α?和向量?x,有?∥αx∥=∣α∣?∥x∥。

  3. 三角不等式:對于任意兩個向量?x?和?y,有?∥x+y∥≤∥x∥+∥y∥。

(2)、常見的向量范數(對應?torch.norm?中的?p?參數)?

在 PyTorch 中,torch.norm(a, p)?計算向量?a?的?p - 范數,其中?p?是范數的階數。最常用的有以下幾種:

①?L1 范數(p=1)

  • 定義:向量所有元素的絕對值之和。
    公式:

  • 例子
    對于向量?a=[3.0,4.0],∥a∥1?=∣3.0∣+∣4.0∣=3+4=7.0。

  • 特點:對異常值(離群點)更敏感,會將大的誤差放大,但計算簡單。

L2 范數(p=2)

  • 定義:向量所有元素的平方和的平方根(即歐幾里得距離)。
    公式:

  • 例子
    對于向量?a=[3.0,4.0],

  • 特點:是最常用的范數,對誤差的懲罰更平滑,在機器學習中常用于正則化(防止過擬合)。

?四、三角函數與指數對數

x = torch.tensor([0.0, torch.pi/2, torch.pi])torch.sin(x)  # [0.0, 1.0, 0.0]
torch.cos(x)  # [1.0, 0.0, -1.0]
torch.tan(x)  # [0.0, inf, 0.0]y = torch.tensor([1.0, 2.0, 3.0])torch.exp(y)  # [e^1, e^2, e^3]
torch.log(y)  # [ln(1), ln(2), ln(3)]

五、高級運算

?1. 矩陣分解

a = torch.rand(3, 3)# LU分解
P, L, U = torch.lu(a)# SVD分解
U, S, V = torch.svd(a)

?2. 特征值與特征向量

a = torch.rand(3, 3)eigenvalues, eigenvectors = torch.eig(a, eigenvectors=True)

?六、統計運算

1. 協方差矩陣

x = torch.rand(10, 3)  # 10個樣本,3個特征# 計算協方差矩陣
cov_matrix = torch.cov(x.t())  # [3, 3]

?2. 直方圖

x = torch.rand(100)# 計算直方圖
hist = torch.histc(x, bins=10, min=0, max=1)
# input:輸入張量(必須是一維張量)。
# bins:直方圖的分箱數(即柱子數量),默認為 10。
# min:直方圖的最小值范圍,小于此值的元素會被忽略。
# max:直方圖的最大值范圍,大于此值的元素會被忽略。若 max=0,則使用 input 的最大值。

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

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

相關文章

C++ Lambda 表達式詳解:從基礎到實戰

Lambda 表達式是 C11 引入的重要特性,它允許我們在代碼中定義匿名函數,極大地簡化了代碼編寫,尤其是在使用 STL 算法和多線程編程時。本文將詳細介紹 Lambda 表達式的語法、特性及實際應用場景。什么是 Lambda 表達式?Lambda 表達…

Spring Boot注解詳解

文章目錄前言1. 核心啟動注解SpringBootApplicationEnableAutoConfigurationSpringBootConfiguration2. 組件注解Component及其衍生注解ComponentServiceRepositoryControllerRestController3. 依賴注入注解AutowiredQualifierPrimary4. Web相關注解請求映射注解RequestMapping…

Web開發:ABP框架12——中間件Middleware的創建和使用

一、簡介中間件可以用于鑒權、日志,攔截器可以用于指定方法或url的業務邏輯處理,兩者分工不同,實現效果相似,先執行中間件,后執行攔截器,再到WebAPI接口。二、示例一個Token驗證中間件三、代碼1.Startup.cs…

京東商品評論如何獲取?API接口實戰指南

一、API接入準備1. 注冊開發者賬號訪問京東開放平臺:前往京東開放平臺注冊賬號,完成企業或個人實名認證。創建應用:在控制臺創建應用,獲取App Key和App Secret(用于簽名認證)。2. 申請API權限搜索接口&…

leetcode-sql-627變更性別

題目: Salary 表: --------------------- | Column Name | Type | --------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int | --------------------- id 是這個表的主鍵…

【學習路線】C#企業級開發之路:從基礎語法到云原生應用

一、C#基礎入門(1-2個月) (一)開發環境搭建Visual Studio安裝配置 Visual Studio Community:免費版本,功能完整Visual Studio Code:輕量級,跨平臺支持JetBrains Rider:專…

Planning Agent:基于大模型的動態規劃與ReAct機制,實現復雜問題自適應執行求解

引言 在當今數據驅動的商業環境中,企業面臨著日益復雜的決策問題。傳統的數據分析工具往往難以應對多步驟、多依賴的復雜問題求解。例如,當企業需要分析"北美市場 Q1-Q2 主要產品的銷售增長趨勢并識別關鍵驅動因素"時,傳統工具可能…

人該怎樣活著呢?55

人該怎樣活著呢? A思考現實問題并記錄自己的靈感 。【生活的指南針】 (20250212) a1如何思考? 當有人問他用什么方法得到那么多發現時,牛頓說:“我只不過對于一件事情,總是花很長時間很熱…

rtthread - V5.1.0版本 HOOK 鉤子函數總結

rtthread - V5.1.0版本 鉤子函數 相對于V4.0.3版本做了很大的修改和優化:舊版本 V4.0.3:rt_thread_inited_sethook(thread_inited_hook);rt_thread_deleted_sethook(thread_deleted_hook);rt_scheduler_sethook(scheduler_hook);新版本 V5.1.0&#xff1…

Python特性:裝飾器解決數據庫長時間斷連問題

前言 在基于 Python 的 Web 應用開發里,數據庫連接是極為關鍵的一環。不過,像網絡波動、數據庫服務器維護這類因素,都可能造成數據庫長時間斷連,進而影響應用的正常運作。本文將詳細介紹怎樣運用 retry_on_failure 裝飾器來解決數…

療愈之手的智慧覺醒:Deepoc具身智能如何重塑按摩機器人的觸覺神經

療愈之手的智慧覺醒:Deepoc具身智能如何重塑按摩機器人的觸覺神經康復中心的理療室內,一位運動員正俯臥在治療床上。機械臂的硅膠觸頭沿腰背肌群緩緩移動,當傳感器捕捉到豎脊肌的異常僵直時,觸頭自動切換高頻震顫模式;…

webpack將組件vue進行編譯混淆,并能正常使用編譯之后的文件

介紹: 我們在開發的過程中有很多組件都需要復用,特別是我們耗費了好幾天時間寫出來的組件,比如自己寫的表格組件,流程圖組件等。總之都是自己不斷測試,不斷編寫耗費了大把的精力寫的。直接用到自己的項目中倒是無所謂,如果是把自己寫的組件給別人,這里就涉及到自己的勞動…

onenote千年老bug,字體bug (calibri微軟雅黑) 的解決

一、如何改這個bug(bug是什么在后文)一、注意1、有些onenote可能是版本問題,即使提供了設置默認字體的選項,但按教程設置后還是不work,建議升級版本2、親身測過這個方法是可行的,如果不行,考慮下…

麒麟信安參編的三項軟件供應鏈安全團體標準發布

日前,由中國電子商會正式發布了T/CECC 39—2025《信息安全技術 軟件供應鏈管理規范》、T/CECC 40—2025《信息安全技術 軟件供應鏈開源組件檢測要求》以及 T/CECC 41—2025《信息安全技術 軟件供應鏈軟件產品檢測要素和方法》三項重要團體標準。麒麟信安結合自身在軟…

Django ORM系統

1. ORM基礎概念1.1 什么是ORM?ORM(Object Relational Mapping,對象關系映射)是一種編程技術,用于在面向對象編程語言中實現不同類型系統的數據轉換。在Django中,ORM充當業務邏輯層和數據庫層之間的橋梁。核…

Tailwind CSS中設定寬度和高度的方法

在 Tailwind CSS 中,設定元素的寬度(width)和高度(height)有多種方式,涵蓋固定值、相對值、響應式調整等。以下是完整的方法分類及示例:一、固定寬度 / 高度類以 4px (0.25rem) 為單位遞增&…

Java行為型模式---備忘錄模式

備忘錄模式基礎概念備忘錄模式(Memento Pattern)是一種行為型設計模式,其核心思想是在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態,以便后續可以將該對象恢復到先前保存的狀態…

后端參數校驗

前端給后端傳輸數據&#xff0c;有時候參數需要校驗&#xff0c;我們自己寫代碼會比較麻煩&#xff0c;我們可以使用springboot為我們提供的注解&#xff0c;降低這些沒有必要的代碼開發。1.引入依賴<dependency><groupId>org.springframework.boot</groupId>…

C++ - 仿 RabbitMQ 實現消息隊列--服務端核心模塊實現(一)

目錄 日志打印工具 實用 Helper 工具 sqlite 基礎操作類 字符串操作類 UUID 生成器類 文件基礎操作 文件是否存在判斷 文件大小獲取 讀文件 寫文件 文件重命名 文件創建/刪除 父級目錄的獲取 目錄創建/刪除 附錄&#xff08;完整代碼&#xff09; 日志打印工具 為了便…

C語言:第07天筆記

C語言&#xff1a;第07天筆記 內容提要 循環結構 break與continue 綜合案例《猜拳游戲》數組 數組的概念一維數組流程控制 break與continue break 功能&#xff1a; ① 用在switch中&#xff0c;用來跳出switch中的case語句&#xff1b;如果case沒有break&#xff0c;可能會產生…