深度學習-Pytorch運算的基本數據類型

深度學習-Pytorch模型運算的基本數據類型

用pytorch構建模型,并訓練模型,得到一個優化的模型,那么模型構造的數據類型怎樣的?

數據分析

數據分析-Pandas如何轉換產生新列

數據分析-Pandas如何統計數據概況

數據分析-Pandas如何輕松處理時間序列數據

數據分析-Pandas如何選擇數據子集

數據分析-Pandas如何重塑數據表-CSDN博客

經典算法

經典算法-遺傳算法的python實現

經典算法-模擬退火算法的python實現

經典算法-粒子群算法的python實現-CSDN博客

pytorch中常常遇到的,最基本的數據類型就是tensors。

Tensors

Tensors是一種特殊的數據結構,與數組和矩陣非常相似。 在 PyTorch 中,我們使用張量對模型的輸入和輸出以及模型的參數進行處理。

Tensors也類似于 NumPy 的 ndarrays,不同之處在于

  • Tensors還可以加載到 GPU 或其他硬件加速器上運行。事實上,Tensors和 NumPy 數組通常可以共享相同的底層內存,無需復制數據。
  • 另外,Tensors還針對自動微分進行了優化(將在稍后的 Autograd 部分看到更多相關內容)。

如果您熟悉 ndarrays,那么您將可以再熟悉下 Tensor API 。如果沒有,請繼續!

import torch
import numpy as np

初始化Tensors

Tensors可以通過多種方式初始化。請看以下示例:

從數據生成

Tensors可以直接從數據創建。數據類型是自動生成的。

data = [[1, 2],[3, 4]]
x_data = torch.tensor(data)

從 NumPy 數組生成

Tensors可以從 NumPy 數組創建(反之亦然 - 參見 Bridge with NumPy)。

np_array = np.array(data)
x_np = torch.from_numpy(np_array)

從另一個Tensor

新tensor將保留參數tensor的屬性(形狀、數據類型),除非顯式覆蓋。

x_ones = torch.ones_like(x_data) # retains the properties of x_data
print(f"Ones Tensor: \n {x_ones} \n")x_rand = torch.rand_like(x_data, dtype=torch.float) # overrides the datatype of x_data
print(f"Random Tensor: \n {x_rand} \n")
Ones Tensor:tensor([[1, 1],[1, 1]])Random Tensor:tensor([[0.8823, 0.9150],[0.3829, 0.9593]])

用隨機值或常量值:

shape是張量維數的元組。在下面的函數中,它確定輸出張量的維數。

shape = (2,3,)
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor = torch.zeros(shape)print(f"Random Tensor: \n {rand_tensor} \n")
print(f"Ones Tensor: \n {ones_tensor} \n")
print(f"Zeros Tensor: \n {zeros_tensor}")
Random Tensor:tensor([[0.3904, 0.6009, 0.2566],[0.7936, 0.9408, 0.1332]])Ones Tensor:tensor([[1., 1., 1.],[1., 1., 1.]])Zeros Tensor:tensor([[0., 0., 0.],[0., 0., 0.]])

Tensors的屬性

Tensors屬性描述它們的形狀、數據類型和存儲它們的設備。

tensor = torch.rand(3,4)print(f"Shape of tensor: {tensor.shape}")
print(f"Datatype of tensor: {tensor.dtype}")
print(f"Device tensor is stored on: {tensor.device}")
Shape of tensor: torch.Size([3, 4])
Datatype of tensor: torch.float32
Device tensor is stored on: cpu

Tensors的操作

超過 100 種tensors運算,包括算術、線性代數、矩陣操作(轉置、 索引、切片)、采樣等。

默認情況下,Tensors是在 CPU 上創建的,在GPU運行需要顯式地使用 .to 函數,將tensor移動到 GPU(當然首先是檢查 GPU 可用性之后)。請記住,跨設備復制大量Tensors ,在時間和內存方面可能很費的!

.to

# We move our tensor to the GPU if available
if torch.cuda.is_available():tensor = tensor.to("cuda")

tensors中的一些操作,和NumPy API類似,比如索引和切片

索引和切片:

tensor = torch.ones(4, 4)print(f"First row: {tensor[0]}")
print(f"First column: {tensor[:, 0]}")
print(f"Last column: {tensor[..., -1]}")
tensor[:,1] = 0
print(tensor)
First row: tensor([1., 1., 1., 1.])
First column: tensor([1., 1., 1., 1.])
Last column: tensor([1., 1., 1., 1.])
tensor([[1., 0., 1., 1.],[1., 0., 1., 1.],[1., 0., 1., 1.],[1., 0., 1., 1.]])

連接Tensors

可以使用按給定維度,連接一系列張量。 參見 torch.stack, 另一個張量連接運算符,它與 略有不同。torch.cat

t1 = torch.cat([tensor, tensor, tensor], dim=1)
print(t1)
tensor([[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.]])

算術運算

# This computes the matrix multiplication between two tensors. y1, y2, y3 will have the same value
# ``tensor.T`` returns the transpose of a tensor
y1 = tensor @ tensor.T
y2 = tensor.matmul(tensor.T)y3 = torch.rand_like(y1)
torch.matmul(tensor, tensor.T, out=y3)# This computes the element-wise product. z1, z2, z3 will have the same value
z1 = tensor * tensor
z2 = tensor.mul(tensor)z3 = torch.rand_like(tensor)
torch.mul(tensor, tensor, out=z3)
tensor([[1., 0., 1., 1.],[1., 0., 1., 1.],[1., 0., 1., 1.],[1., 0., 1., 1.]])

單元素Tensor

如果你有一個單元素張量,例如通過聚合所有 一個張量的值變成一個值,可以將其轉換為Python 數值使用:item()

agg = tensor.sum()
agg_item = agg.item()
print(agg_item, type(agg_item))
12.0 <class 'float'>

in place操作

將結果存儲到操作數中的操作,稱為in place操作。它們用后綴表示。 例如:,,將更改。_x.copy_(y) x.t_() x

print(f"{tensor} \n")
tensor.add_(5)
print(tensor)
tensor([[1., 0., 1., 1.],[1., 0., 1., 1.],[1., 0., 1., 1.],[1., 0., 1., 1.]])tensor([[6., 5., 6., 6.],[6., 5., 6., 6.],[6., 5., 6., 6.],[6., 5., 6., 6.]])

注意

in place運算可以節省一些內存,但在計算導數時可能會出現問題,因為會立即丟失運算的歷史記錄。因此,不鼓勵使用它們。


覺得有用 收藏 收藏 收藏

點個贊 點個贊 點個贊

End

GPT專欄文章:

GPT實戰系列-ChatGLM3本地部署CUDA11+1080Ti+顯卡24G實戰方案

GPT實戰系列-LangChain + ChatGLM3構建天氣查詢助手

大模型查詢工具助手之股票免費查詢接口

GPT實戰系列-簡單聊聊LangChain

GPT實戰系列-大模型為我所用之借用ChatGLM3構建查詢助手

GPT實戰系列-P-Tuning本地化訓練ChatGLM2等LLM模型,到底做了什么?(二)

GPT實戰系列-P-Tuning本地化訓練ChatGLM2等LLM模型,到底做了什么?(一)

GPT實戰系列-ChatGLM2模型的微調訓練參數解讀

GPT實戰系列-如何用自己數據微調ChatGLM2模型訓練

GPT實戰系列-ChatGLM2部署Ubuntu+Cuda11+顯存24G實戰方案

GPT實戰系列-Baichuan2本地化部署實戰方案

GPT實戰系列-Baichuan2等大模型的計算精度與量化

GPT實戰系列-GPT訓練的Pretraining,SFT,Reward Modeling,RLHF

GPT實戰系列-探究GPT等大模型的文本生成-CSDN博客

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

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

相關文章

Three.js-04軌道控制器

1.導入 說明&#xff1a;相機圍繞目標進行軌道運動。也就是可以通過鼠標拖拽進行移動視角。 import { OrbitControls } from three/addons/controls/OrbitControls.js; 2.使用 說明&#xff1a;構造controls對象&#xff0c;再調用update方法&#xff1b;為了使效果更為明顯…

十二、Qt自定義Widget組件、靜態庫與動態庫

一、自定義Widget組件 1、自定義Widget組件 使用步驟采用提升法&#xff08;promotion&#xff09;重新定義paintEvent事件 2、實現程序 &#xff08;1&#xff09;創建項目&#xff0c;基于QWidget &#xff08;2&#xff09;添加類&#xff0c;為Widget組件提升類 #inclu…

Spring Boot 集成 Quartz 實現定時任務

Spring Boot 集成 Quartz 實現定時任務 在Spring Boot應用中&#xff0c;我們經常需要執行一些定時任務&#xff0c;如每天發送報表、定時更新數據庫等。雖然Spring Framework自帶了一個簡單的定時任務功能&#xff08;Scheduled&#xff09;&#xff0c;但在一些復雜場景下&a…

Vue3 在SCSS中使用v-bind

template 先創建一個通用的頁面結構 <template><div class"v-bubble-bg"></div> </template>js 在JS中先對需要用的數據進行定義&#xff1a; 可以是參數&#xff0c;也可以是data <script setup>const props defineProps({bgCol…

cURL 命令中有$的問題

最近學會使用cURL來快速訪問網絡資源&#xff0c;確實很好用&#xff0c;但在使用過程中遇到一個奇怪的問題&#xff0c;多方查詢也沒有找到現成答案&#xff0c;最后經摸索終于解決&#xff0c;特記錄如下。 我們一般訪問網站使用Chrome瀏覽器獲取的cURL命令大概是這個樣子&am…

gpt批量原創文章生成器,不限制內容的生成器

在當今的數字化時代&#xff0c;內容創作是網站持續發展的重要組成部分。然而&#xff0c;對于擁有大量內容需求的網站來說&#xff0c;手動創作文章可能會耗費大量時間和精力。為了解決這一問題&#xff0c;許多GPT&#xff08;生成式預訓練模型&#xff09;文章生成軟件應運而…

【重溫設計模式】外觀模式及其Java示例

設計模式及外觀模式介紹 在編程世界中&#xff0c;設計模式就如同自然界的法則&#xff0c;是一種反復出現在各種情況下的通用解決方案。設計模式可以分為創建型、結構型和行為型三大類&#xff0c;每一類都有其獨特的應用場景和解決問題的方式。今天&#xff0c;我們要重點解…

【HbuilderX】 uniapp實現 android申請權限 和 退出app返回桌面

目錄 android申請權限&#xff1a; 監聽用戶是否開啟權限或關閉權限&#xff1a; 退出app返回桌面&#xff1a; android申請權限&#xff1a; 首先在 manifest.json 內添加你所需要用到權限 添加權限插件 permission.js 一次就好1/權限插件 - Gitee.comhttps://gitee.co…

數據庫分庫分表中間件選擇

目前分庫分表的中間件有三種設計思路&#xff0c;分別是&#xff1a; 采用分散式架構&#xff0c;適用于用Java開發的高性能輕量級OLTP應用程序&#xff0c;以Sharding-JDBC為代表。采用中間層Proxy架構&#xff0c;提供了靜態輸入和所有語言支持&#xff0c;適用于OLAP應用程…

MATLAB環境下基于小波和濾波器組的音頻信號處理

音頻分類研究的重點&#xff0c;一方面在于音頻特征的提取和選擇&#xff0c;通常來說數據集和特征集在分類系統中有著極為重要的作用&#xff0c;離開了對數據集的處理、對特征集中特征的提取和選擇&#xff0c;分類結果必將產生巨大誤差。對于提高音頻分類系統的分類準確度和…

vulnhub-----Hackademic靶機

文章目錄 1.C段掃描2.端口掃描3.服務掃描4.web分析5.sql注入6.目錄掃描7.寫馬php反彈shell木馬 8.反彈shell9.內核提權 1.C段掃描 kali:192.168.9.27 靶機&#xff1a;192.168.9.25 ┌──(root?kali)-[~] └─# arp-scan -l Interface: eth0,…

Docker容器(3)單容器管理

一、單容器 1.1概念簡介 Docker三個重要概念: 倉庫(Repository); 鏡像(Image); 容器(Container). *Docker的三個重要概念是倉庫(Repository)、鏡像(Image)和容器(Container)**。具體如下&#xff1a; **鏡像(Image)**&#xff1a;Docker鏡像是創建容器的基礎&#xff0c;它類似…

『NLP學習筆記』圖解Word2vec(The Illustrated Word2vec)

圖解Word2vec(The Illustrated Word2vec) 文章目錄 一. 詞嵌入(word embedding)1.1. 個性嵌入:你是什么樣的人?1.2. 詞嵌入1.3. 類比1.4. 語言模型1.5. 語言模型訓練1.6. 顧及兩頭(上下文)1.7. Skip-gram模型1.8. 重新審視訓練過程1.9. 負例采樣1.10. 基于負例采樣的Skip…

Maven面試題

以下是一些關于Maven的經典面試題以及它們的答案&#xff1a; 1、什么是Maven&#xff1f; Maven是一個項目管理工具&#xff0c;用于構建、管理、發布Java項目。 2、為什么要使用Maven而不是手動管理項目依賴&#xff1f; Maven提供了依賴管理、統一的構建、打包、文檔生…

Linux DKMS

DKMS&#xff08;Dynamic Kernel Module Support&#xff09;是一個框架&#xff0c;用于構建和安裝內核模塊。它允許第三方內核模塊在系統內核升級時自動重新構建和安裝&#xff0c;從而確保這些模塊與新內核版本兼容。 DKMS的工作原理是將內核模塊的源代碼和安裝腳本存儲在一…

Google索引腳本:快速索引你的網站

公眾號&#xff1a;【可樂前端】&#xff0c;每天3分鐘學習一個優秀的開源項目&#xff0c;分享web面試與實戰知識。 每天3分鐘開源 hi&#xff0c;這里是每天3分鐘開源&#xff0c;很高興又跟大家見面了&#xff0c;今天介紹的開源項目簡介如下&#xff1a; 倉庫名&#xff1…

園區停車管理系統的設計與實現

** &#x1f345;點贊收藏關注 → 私信領取本源代碼、數據庫&#x1f345; 本人在Java畢業設計領域有多年的經驗&#xff0c;陸續會更新更多優質的Java實戰項目希望你能有所收獲&#xff0c;少走一些彎路。&#x1f345;關注我不迷路&#x1f345;** 一 、設計說明 1.1 選題…

【前端素材】推薦優質在線通用果蔬商城電商網頁eStore平臺模板(附源碼)

一、需求分析 1、系統定義 通用果蔬網站是指專門提供各類果蔬產品展示和銷售的在線平臺。它將不同種類的新鮮水果、蔬菜、干果、堅果等聚集在一起&#xff0c;為消費者提供方便、快捷的購物渠道。 2、功能需求 通用果蔬網站是指專門提供各類果蔬產品展示和銷售的在線平臺。…

Nginx常用配置--負載均衡服務

可以將 nginx 作為一個非常高效的 HTTP 負載均衡器&#xff0c;將流量分配到多個應用服務器上&#xff0c;并通過 nginx 提高 Web 應用的性能、可擴展性和可靠性。 nginx 可以通過添加一個 upstream&#xff0c;來實現 nginx 的負載均衡功能。 upstream myserver {server 192…

算法D27|回溯算法4| 93.復原IP地址 78.子集 90.子集II

93.復原IP地址 本期本來是很有難度的&#xff0c;不過 大家做完 分割回文串 之后&#xff0c;本題就容易很多了 題目鏈接/文章講解&#xff1a;代碼隨想錄 視頻講解&#xff1a;回溯算法如何分割字符串并判斷是合法IP&#xff1f;| LeetCode&#xff1a;93.復原IP地址_嗶哩嗶…