深度學習|pytorch基本運算

【1】引言

pytorch是深度學習常用的包,顧名思義,就是python適用的torch包,在python里面使用時直接import torch就可以調用。

需要注意的是,pytorch包與電腦配置、python版本有很大關系,一定要仔細閱讀安裝要求、找到教程后再安裝。由于已經有很多詳細指導教程,這里就不再班門弄斧。

本文的寫作目的是記錄pytorch的基本運算、以備不時之需,歡迎大家一起學習和討論。

大家也可以到pytorch的官網教程地址自主學習:Learning PyTorch with Examples — PyTorch Tutorials 2.7.0+cu126 documentation

【2】基本運算

【2.1】導入包

導入包的操作非常簡單,和其他包的導入一模一樣:

# 導入包
import torch

【2.2】生成隨機張量

pytorch支持生成隨機張量,和numpy包的操作一樣,代碼:

# 導入包
import torch
# 定義隨機量
x=torch.randn(3,4)
# 打印
print(x)

這里定義了一個3行4列且符合標準正態分布的隨機矩陣,運算后的結果為:

圖1 torch.randn(3,4)?

關于torch.randn()函數的說明,可以通過官網教程進一步加深理解:

torch.randn — PyTorch 2.7 documentation

torch.randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) → Tensor

torch.randn()函數的?具體參數:

  • size,隨機數矩陣/張量的行列尺寸
  • generator=None,隨機數生成器,一般無需設置
  • out=None,輸出張量,默認為沒有,一般無需設置
  • dtype=None,生成隨機數矩陣/張量的數據類型,一般無需設置,會默認跟隨全局數據類型自動調整
  • layout=torch.strided,輸出矩陣/張量的布局形式,一般默認即可,都是大家熟悉的矩陣樣式
  • device=None,和電腦配置相關,一般無需設置
  • requires_grad=False,grad是求導操作,只要要求導的時候才會用
  • pin_memory=False,在內存中給張量分配空間,僅適用CPU張量,一般無需設置

【2.3】生成多維張量

pytorch支持生成多維張量,代碼:

# 導入包
import torch
# 生成多為維張量
y=torch.tensor([[1,2,3,4],[5,6,7,8],[1,3,5,7]])
#打印
print('y=',y)
# 生成空張量
z=torch.tensor([])
#打印
print('z=',z)

這里只調用了一個函數torch.tensor(),在函數中使用方括號“[]”可以直接定義張量,運算后的結果為:

?圖2 torch.tensor([]

關于torch.tensor()函數的說明,可以通過官網教程進一步加深理解:

torch.tensor — PyTorch 2.7 documentation

torch.tensor(data, *, dtype=None, device=None, requires_grad=False, pin_memory=False) → Tensor?

torch.tensor()函數的?具體參數:

  • data,張量的初始數據。可以是列表、元組、NumPy ndarray、標量和其他類型
  • dtype=None,生成隨機數矩陣/張量的數據類型,一般無需設置,會默認跟隨全局數據類型自動調整
  • device=None,和電腦配置相關,一般無需設置
  • requires_grad=False,grad是求導操作,只要要求導的時候才會用
  • pin_memory=False,在內存中給張量分配空間,僅適用CPU張量,一般無需設置

【2.4】張量變形

pytorch支持張量變形運算,代碼:

# 導入包
import torch
# 生成多為維張量
y=torch.tensor([[1,2,3,4],[5,6,7,8],[1,3,5,7]])
#打印
print('y=',y)
# 變形
y=y.reshape(2,6)
# 打印
print('y=',y)

這里只調用了一個函數reshape(),原始張量是3行4列,reshape之后變化成2行6列,運算后的結果為:

?圖3 reshape()

這里使用的reshape()函數是通過張量加點的形式直接調用,torch包也允許通過torch.reshape()的形式進行變形,官網鏈接為:

torch.reshape — PyTorch 2.7 documentation

這里的調用形式為:

torch.reshape(input, shape) → Tensor

?input,待變形的張量

shape,張量變形后的尺寸

可以依據這個形式重寫上述代碼,最后運行效果一樣:

# 導入包
import torch
# 生成多為維張量
y=torch.tensor([[1,2,3,4],[5,6,7,8],[1,3,5,7]])
#打印
print('y=',y)
# 變形
y=torch.reshape(y,(2,6))
# 打印
print('y=',y)

【2.5】張量加減

pytorch支持不同張量在同一位置進行加減運算,代碼:

import torch
# 生成多為維張量
a=torch.tensor([[1,2,3,4],[5,6,7,8],[1,3,5,7]])
b=torch.tensor([[1,2,2,3],[5,6,2,8],[1,3,8,7]])
# 打印
print('a',a)
print('b',b)
# 張量加減法
y=a+b
z=a-b
# 打印
print(y)
print(z)

代碼運行后:

??圖4 加減法

張量加減是在同一位置上進行的,需要提前準備好各個位置上的元素。

如果兩個張量大小不一致,pytorch也能進行加減運算,這就是廣播機制。

【2.6】張量廣播運算?

pytorch支持張量廣播運算,代碼:

# 導入包
import torch
# 生成多為維張量
y=torch.tensor([1,2,3])
z=torch.tensor([[3],[2],[1]
])
#打印
print('y=',y)
print('z=',z)
# 
a=y+z
print('a=',a)

代碼非常清楚,y是行向量,z是列向量,這兩個張量形式上完全不一樣,所以直接看運算效果來反推pytorch是如何廣播的:

?圖5 廣播-加法

計算結果表明,行向量y按照行廣播,列向量z按照列廣播,廣播后變成同等大小的張量,然后對相同位置的各個元素進行疊加。

可以使用以下代碼測試:

# 導入包
import torch
# 生成多為維張量
y=torch.tensor([[1,2,3],[1,2,3],[1,2,3]])
z=torch.tensor([[3,3,3],[2,2,2],[1,1,1]
])
#打印
print('y=',y)
print('z=',z)
#
a=y+z
print('a=',a)

代碼運行效果:

?圖6 加法?

對比圖5和圖6,運算效果一致。

在張量尺寸大小不一致時,pytorch進行加減法運算時自動執行廣播運算,在保證兩個張量外形尺寸一致后,再對同一位置的元素進行加減運算。

【3】總結

探索了部分pytorch的基本運算。?

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

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

相關文章

DeepSeek 賦能數字人直播帶貨:技術革新重塑電商營銷新生態

目錄 一、引言二、DeepSeek 技術探秘2.1 DeepSeek 技術原理剖析2.2 DeepSeek 與其他大模型對比優勢 三、數字人直播帶貨現狀洞察3.1 數字人直播帶貨發展歷程回顧3.2 市場規模與增長趨勢分析3.3 現存問題與挑戰探討 四、DeepSeek 在數字人直播帶貨中的應用實例4.1 交個朋友的成功…

實驗設計與分析(第6版,Montgomery)第5章析因設計引導5.7節思考題5.11 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第5章析因設計引導5.7節思考題5.11 R語言解題。主要涉及方差分析&#xff0c;正態假設檢驗&#xff0c;殘差分析&#xff0c;交互作用圖。 dataframe<-data.frame( densityc(570,565,…

四、關系數據庫標準語言SQL_1

四、關系數據庫標準語言SQL_1 主要內容 4.1 SQL概述 SQL簡介 4.2 SOL的系統結構4.3 SQL數據定義 SQL的數據定義 4.5 SQL數據查詢4.6 SQL數據更新4.7 SQL中的視圖4.8 SQL的數據控制4.9 嵌入式SQL小結 4.1 SQL概述 主要內容 SQL簡介SQL的特點SQL的系統結構 SQL簡介 SQL&…

vscode的Embedded IDE創建keil項目找不到源函數或者無法跳轉

創建完Embedded IDE項目后跳轉索引很容易找不到源函數或者無法跳轉&#xff0c;原因是vscode工作區被eide覆蓋了&#xff0c;需要手動往當前目錄下的.vscode/c_cpp_properties.json里添加路徑 打開eide.json &#xff0c;找到folders&#xff0c; 里面的name是keil里工程的虛擬…

【Docker管理工具】部署Docker管理面板DweebUI

【Docker管理工具】部署Docker管理面板DweebUI 一、DweebUI介紹1.1 DweebUI 簡介1.2 主要特點1.3 使用場景 二、本次實踐規劃2.1 本地環境規劃2.2 本次實踐介紹 三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本 四、下載DweebUI鏡像五、…

CentOS7.9環境離線部署docker和docker-compose的兩種方式

目 錄 一、yum安裝&#xff0c;使用rpm安裝包和相關依賴 1.1 準備rpm安裝包 1.2 將docker-23.0.4.tar.gz上傳至/opt目錄下 二、二進制文件方式安裝 三、安裝docker-compose 一、yum安裝&#xff0c;使用rpm安裝包和相關依賴 1.1 準備rpm安裝包 1&#xff09;在一臺與…

AI賦能SEO關鍵詞策略

內容概要 當前搜索引擎優化領域正經歷由人工智能驅動的范式革新。傳統關鍵詞研究依賴人工統計與經驗判斷&#xff0c;而AI技術通過多維數據建模與自然語言處理&#xff0c;實現了從用戶行為分析到語義關聯挖掘的系統升級。具體而言&#xff0c;智能語義解析技術可穿透表層搜索…

MonoPCC:用于內窺鏡圖像單目深度估計的光度不變循環約束|文獻速遞-深度學習醫療AI最新文獻

Title 題目 MonoPCC: Photometric-invariant cycle constraint for monocular depth estimation of endoscopic images MonoPCC&#xff1a;用于內窺鏡圖像單目深度估計的光度不變循環約束 01 文獻速遞介紹 單目內窺鏡是胃腸診斷和手術的關鍵醫學成像工具&#xff0c;但其…

使用基于Xsens慣性傳感器的動作捕捉技術測量人體工程學

由于單調和片面的體力消耗&#xff0c;牙科領域的從業者患肌肉骨骼疾病 (MSD) 的幾率很高。慣性測量單元 (IMU) 越來越成為評估工作姿勢風險的焦點。因此&#xff0c;本研究旨在使用基于慣性傳感器的運動捕捉 (MoCap) 評估人體工程學講座和培訓干預對牙科助理學生的姿勢風險和M…

抗輻照加固CANFD芯片:以車規級設計提升商業航天系統可靠性

摘要 商業航天領域的發展對電子系統的可靠性和抗輻照能力提出了更高要求。本文深入探討了抗輻照加固CANFD芯片如何借助車規級設計&#xff0c;增強商業航天系統的可靠性。本文以國科安芯CANFD芯片ASM1042為例&#xff0c;通過對芯片單粒子效應脈沖激光試驗報告、數據手冊及芯片…

VSCode+Cline 安裝配置及使用說明

安裝配置 打開VSCode&#xff0c;點擊左側Extension圖標&#xff0c;在彈出頁面中&#xff0c;檢索Cline&#xff0c;選擇Cline進行安裝。 安裝完畢&#xff0c;在左側會出現一個圖標&#xff0c;點擊圖標 選擇【Use your own API key】&#xff0c;在出來的界面中選擇大模型&…

【Linux 基礎知識系列】第二篇-Linux 發行版概述

一、什么是 Linux 發行版&#xff1f; Linux 發行版是指將 Linux 內核和應用程序、工具、庫等有機組合在一起&#xff0c;形成一個完整的操作系統。由于 Linux 的開源特性&#xff0c;任何人都可以在 Linux 內核的基礎上進行修改和定制&#xff0c;因此產生了許多不同的發行版…

深入理解Transformer架構:從原理到實踐

深入理解Transformer架構&#xff1a;從原理到實踐 引言 Transformer架構自2017年由Google在論文《Attention Is All You Need》中提出以來&#xff0c;已經徹底改變了自然語言處理(NLP)領域&#xff0c;并逐漸擴展到計算機視覺、語音識別等多個領域。本文將深入解析Transfor…

下載即轉化的商業密碼:解析華為應用商店CPD廣告的智能投放邏輯

在移動互聯網流量紅利見頂的背景下&#xff0c;華為應用市場憑借其終端生態優勢正成為開發者獲客的新藍海。數據顯示&#xff0c;2025年Q1華為應用商店全球分發量同比增長27%&#xff0c;其中CPD廣告因其"下載才付費"的精準特性&#xff0c;已成為金融、游戲、工具類…

Python+GEE+AI,從基礎到實戰,全面掌握遙感云大數據分析與可視化!涵蓋森林監測、洪澇災害、干旱評估、植被變化等熱點領域的實際應用方案

&#x1f50d; 遙感技術的飛躍與挑戰 隨著航空、航天以及近地空間遙感平臺的持續發展&#xff0c;遙感技術近年來取得了顯著進步。遙感數據的空間分辨率、時間分辨率、光譜分辨率以及數據量都大幅提升&#xff0c;呈現出典型的大數據特征。這為相關研究帶來了新的機遇&#xff…

Android Studio里的BLE數據接收策略

#本人是初次接觸Android藍牙開發&#xff0c;若有不對地方&#xff0c;歡迎指出。 #由于是講接收數據策略(其中還包含數據發送的部分策略)&#xff0c;因此其他問題部分不會講述&#xff0c;只描述數據接收。 簡介(對于客戶端---手機端) 博主在處理數據接收的時候&#xff0…

【第4章 圖像與視頻】4.2 圖像的縮放

文章目錄 前言示例-圖像的縮放在 Canvas 邊界之外繪制圖像 前言 在上節中讀者已經學會了如何使用 drawImage() 方法將一幅未經縮放的圖像繪制到 canvas 之中。現在我們就來看看如何用該方法在繪制圖像的時候進行縮放 示例-圖像的縮放 未縮放的圖像&#xff0c;顯示圖形原有大…

[網頁五子棋][用戶模塊]客戶端開發(登錄功能和注冊功能)

文章目錄 客戶端開發登錄功能htmlcsscommon.csslogin.css jQuery引入 jquery 運行程序注冊功能 客戶端開發 登錄功能 html <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport&…

【Doris基礎】Apache Doris業務場景全解析:從實時數倉到OLAP分析的完美選擇

目錄 1 Doris核心能力概述 2 實時數據分析場景 2.1 實時數據倉庫 2.2 實時監控與告警 3 交互式OLAP分析場景 3.1 自助式BI分析 3.2 用戶行為分析 4 大數據分析場景 4.1 日志分析系統 4.2 時序數據處理 5 Doris技術架構適配性分析 5.1 適合Doris的場景特征 5.2 不適合Doris的場景…

C# 類和繼承(類繼承和訪問繼承的成員)

類繼承 通過繼承可以定義一個新類&#xff0c;新類納入一個已經聲明的類并進行擴展。 可以使用一個已經存在的類作為新類的基礎。已存在的類稱為基類&#xff08;base class&#xff09;&#xff0c;新類稱 為派生類&#xff08;derived class&#xff09;。派生類成員的組成如…