深度學習--tensor(創建、屬性)

一、torch概念

1.1簡介

? ? ? ? pytorch簡稱torch,意為深度學習框架。它使用張量(tensor)來表示數據,可以輕松地處理大規模數據集,且可以在GPU上加速。

? ? ? ? pytorch基本功能:自動微分、自動求導等。

1.2安裝

? ? ? ? 官網獲得下載命令。

二、tensor概述

pytorch將數據封裝成張量進行計算。

2.1概念

? ? ? ? 張量:元素類型相同的多維矩陣,可以在GPU上于運行。

? ? ? ? 張量的維度決定了它的形狀:

(1)0維張量:標量;

(2)1維張量:向量、數組;

(3)2維張量:矩陣;

(4)更高維度張量:圖像、視頻等。

2.2特點

(1)動態計算圖;

(2)GPU支持;

(3)自動微分。

2.3數據類型

? ? ? ? 主要數據類型:浮點數float,整數int,布爾值True、False。

????????其中,浮點數和整數又分為8位、16位、32位、64位,加起來共9種。

三、tensor創建

3.1基本創建方式

(1)torch.tensor()

? ? ? ? 注意tensor為小寫,根據指定的數據創建張量。

代碼示例:

# 指定數據進行創建 torch.tensor
import torch
import numpy as np
# 用標量創建張量
data = torch.tensor(7)   #0維張量
print(data)
print(data.shape)

結果:

tensor(7)

torch.Size([])

(2)torch.Tensor()

???????? 注意tensor為大寫,根據形狀創建張量,也可用指定的數據創建張量。

代碼示例:

# 指定形狀進行創建 torch.Tensor
def test01():tensor1 = torch.Tensor(3,4)print(tensor1)tensor2 = torch.Tensor([[1],[2],[3]])print(tensor2,tensor2.dtype)tensor3 = torch.Tensor([0])print(tensor3.shape,tensor3.dtype)tensor1 = torch.Tensor([1,2]).int()print(tensor1.dtype)if __name__ == '__main__':test01()

結果:

tensor([[-4.6947e-33, 1.9716e-42, 0.0000e+00, 0.0000e+00],

[ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00],

[ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]])

tensor([[1.], [2.], [3.]]) torch.float32

torch.Size([1]) torch.float32

torch.int32

(3)torch.IntTensor()

? ? ? ? 用于創建指定類型的張量。

代碼示例:

# 指定類型進行創建 torch.IntTensor
data = torch.IntTensor(3,3)
print(data)
print(data.shape,data.dtype)

結果:

tensor([[-1983708176, 1407, 0],

[ 0, 0, 0],

[ 0, 0, 0]], dtype=torch.int32)

torch.Size([3, 3]) torch.int32

3.2創建線性張量

? ? ? ? 利用API:

????????torch.arange():PyTorch 中用于生成一個一維張量(向量)的函數,該張量包含從起始點到結束點(不包括結束點)的等間隔數值序列。

? ? ? ? torch.linspace((start,end,steps)):返回一個一維張量,包含在區間 `[start, end]` 上均勻間隔的 `steps` 個點。

代碼示例:

# 創建線性張量
import torch
def tensor():data = torch.arange(0,9,2)print(data,data.shape,data.dtype)data1 = torch.linspace(1,10,3)print(data1,data1.shape,data1.dtype)tensor()

結果:

tensor([0, 2, 4, 6, 8]) torch.Size([5]) torch.int64

tensor([ 1.0000, 5.5000, 10.0000]) torch.Size([3]) torch.float32

3.3創建隨機張量

隨機數種子:torch.manual_seed()

獲取隨機數種子:torch.initial_seed()

創建隨機張量:torch.rand--均勻分布?/ torch.randn--正態分布

代碼示例:

# 創建隨機張量
import numpy as np
def random_t():torch.manual_seed(33)print(torch.initial_seed())data = torch.rand(3,4)data2 = torch.randn(2,3).int()print(data,data.shape,data.dtype)print(data2,data2.shape,data2.dtype)return 
random_t()

結果:

33

tensor([[0.6186, 0.5587, 0.1937, 0.3360],

????????????[0.2008, 0.6970, 0.6367, 0.1452],

????????????[0.8213, 0.2365, 0.3702, 0.9168]]) torch.Size([3, 4]) torch.float32

tensor([[ 0, 0, -1],

????????????[ 0, -1, 1]], dtype=torch.int32) torch.Size([2, 3]) torch.int32

四、tensor常見屬性

4.1獲取屬性

? ? ? ? Tensor張量常見屬性有三個:dtype(獲取類型),shape(獲取形狀),device(獲取運行設備)

代碼示例:

import torch
import numpy as np
data = torch.tensor(np.random.randint(0,10,(2,2)))
print(data)
print(data.shape)
print(data.dtype)
print(data.device)

結果:

tensor([[4, 4], [6, 5]], dtype=torch.int32)

torch.Size([2, 2])

torch.int32

cpu

4.2切換設備

主要是指CPU,GPU之間的相互轉換。

注意:這里都要重新賦值

(1)直接data.cuda()

(2)在創建張量時指定device類型

(3)重新賦值data.to(device)

代碼示例:

# 切換設備
import torch
import numpy as np
data = torch.tensor(np.random.randint(0,10,(2,2)))
print(data)
print(data.shape)
print(data.dtype)
print(data.device)device = 'cuda' if torch.cuda.is_available() else 'cpu'
data_new = data.to(device=device)
print(data_new.device)data2 = torch.tensor([1,2,3],device='cpu')
print(data2.device)data3 =  torch.tensor([1,2,3],dtype=torch.float32)
data3_new = data3.cuda()
print(data3_new.device)

結果:

tensor([[4, 6], [5, 8]], dtype=torch.int32)

torch.Size([2, 2])

torch.int32

cpu

cpu

cpu

Torch not compiled with CUDA enabled(這里是因為我沒有安裝GPU)

4.3類型轉換

(1)使用type進行轉換,在type()括號內填上需要轉換為的目標類型;

(2)重新賦值 data = data.int()

(3)創建張量時指定類型 dtype= torch.int64

代碼示例:

# 類型轉換
import torch
import numpy as npdata = torch.tensor(np.random.randn(3,4),dtype=torch.int64)
print(data,data.dtype)data2 = torch.tensor([[1,2],[3,4]])
data2 = data2.float()
print(data2,data2.dtype)data3 = torch.tensor([8,9,0])
data3 = data3.type(torch.bool)
print(data3,data3.dtype)

結果:

tensor([[ 0, 0, 0, -2], [ 0, 1, 0, -1], [ 1, 0, 0, 0]]) torch.int64

tensor([[1., 2.], [3., 4.]]) torch.float32

tensor([ True, True, False]) torch.bool

五、小結

? ? ? ? 綜上,簡單學習了張量的創建以及張量相關屬性的獲取,數據類型的修改方式。都是一些簡單的基本操作,但是對于不熟的代碼還是要勤加練習。

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

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

相關文章

【內存】Linux 內核優化實戰 - net.ipv4.tcp_max_tw_buckets

目錄net.ipv4.tcp_max_tw_buckets 詳解一、基本概念二、核心作用三、默認值四、調整場景需增大參數的場景需減小參數的場景五、查看與修改方法1. 查看當前值2. 臨時修改(重啟失效)3. 永久修改(重啟生效)六、注意事項總結net.ipv4.…

短劇系統開發定制全流程解析:從需求分析到上線運營

一、短劇行業現狀與系統開發價值短劇作為一種新興的內容形態,近年來呈現爆發式增長態勢。2023年中國短劇市場規模已突破300億元,用戶規模超過5億,這種以"快節奏、強劇情、低成本"為特點的內容形式正在重塑數字娛樂產業格局。短劇系…

各服務器廠商調整BIOS睿頻教程

調整BIOS睿頻選項匯總:1、華為服務器:2、華為服務器V53、浪潮服務器4、浪潮服務器M45、 曙光服務器5.1 曙光I620-G205.2 曙光I620-G306、聯想服務器(650系列)650系列的服務器對照截圖信息修改對應項,修改為截圖里的選項…

PyTorch筆記3----------統計學相關函數

1.基礎函數 import torch a torch.rand(2,2) print("a:\n",a) print(########################) print("平均值:\n",torch.mean(a,dim0)) print("總和:\n",torch.sum(a,dim0)) print("所有元素的積:\n",torch.prod(a,dim0)) print(&…

【Prometheus】通過tar包部署單機版Prometheus 和 Pushgateway

在ECS(Elastic Compute Service)機器上通過tar包部署 Prometheus 和 Pushgateway,并配置 Prometheus 采集 Pushgateway 的數據,是一個常見的監控部署任務。以下是詳細的步驟說明:🧩 環境準備 操作系統&…

Matlab 頻譜分析 (Spectral Analysis)

文章目錄1. 信號預處理 - 去直流分量2. 快速傅里葉變換(FFT)3. 功率譜密度(PSD)計算4. 主頻率檢測5. 譜質心計算6. 對數譜顯示完整的信號處理流程實際應用示例1. 信號預處理 - 去直流分量 data data - mean(data);數學原理&…

【實時Linux實戰系列】實時以太網與 TSN 基礎

在實時系統中,網絡通信的實時性和可靠性是確保系統正常運行的關鍵。實時以太網和時間敏感網絡(TSN)技術為實時數據傳輸提供了強大的支持。TSN通過一系列協議和機制,確保數據能夠在預定的時間內可靠傳輸,滿足工業自動化…

茶顏悅色JAVA面試分享

1、自我介紹項目2、設計一個爆款飲品秒殺系統:如何解決“幽蘭拿鐵”上新時的瞬時10萬QPS?從緩存、限流、庫存扣減到訂單創建的全流程設計。3、訂單超市未支付自動取消:如何實現高精度(30分鐘精確到秒)且低延遲的訂單狀…

OneCode圖表配置速查手冊

前言 在數據可視化日益成為業務決策核心驅動力的今天,高效、靈活的圖表配置系統已成為開發人員不可或缺的工具。OneCode圖表組件憑借其豐富的圖表類型與精細化的配置能力,為開發者提供了構建專業數據可視化界面的完整解決方案。然而,隨著圖表…

二維碼驅動的獨立站視頻集成方案

一、獨立站視頻嵌入的技術挑戰與架構設計 在獨立站建設中,視頻內容的集成面臨著性能、安全與用戶體驗的三重挑戰。傳統直接嵌入方式會導致頁面加載緩慢(平均增加3-5秒首屏時間)、服務器帶寬消耗激增(單視頻日均播放1000次約產生50…

【STM32】預分頻因子(Prescaler)和重裝載值(Reload Value)

在 STM32 的 獨立看門狗(IWDG) 中(結合上文【STM32】獨立看門狗(提供完整實例代碼)),為了控制看門狗的超時時間(溢出時間),我們主要設置兩個參數:…

從0到1搭建同城O2O外賣平臺:外賣系統源碼架構解析與實戰指南

當下,越來越多的創業者、品牌連鎖商家,甚至社區集群,開始布局屬于自己的本地外賣平臺。而對于軟件開發者和技術團隊而言,如何從0到1搭建一套可落地、可擴展、可持續運營的外賣系統,成為了一個既現實又挑戰性十足的話題…

MySQL 8.0 OCP 1Z0-908 題目解析(16)

題目61 Choose the best answer. Examine this command, which executes successfully: mysqlbackup --defaults-file/backups/server-my.cnf --backup-dir/backups/full copy-backWhich statement is true about the copy-back process? ○ A) It restores files from the da…

WSL命令

以下是 WSL&#xff08;Windows Subsystem for Linux&#xff09;的常用命令大全&#xff0c;涵蓋安裝、管理、網絡、文件交互等場景&#xff0c;方便快速查閱和使用&#xff1a;1. 安裝與版本管理命令說明wsl --install默認安裝 WSL 和 Ubuntuwsl --install -d <發行版名&g…

AI語音訓練——GPT-SoVITS(GSV)

鏈接說明 github項目地址&#xff1a;RVC-Boss/GPT-SoVITS: 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 項目中文說明書&#xff1a; GPT-SoVITS指南//項目說明書里也有在線使用的鏈接 原項目作者B站教學視頻&#xff1a;耗時兩個…

事件委托版本tab欄切換

事件委托&#xff1a;是JavaScript中注冊事件的常用技巧&#xff0c;也稱事件委派、事件代理簡單理解&#xff1a;原本需要注冊在子元素的事件委托給父元素&#xff0c;讓父元素擔當事件監聽的職務優點&#xff1a;減少注冊次數&#xff0c;可提高程序性能原理&#xff1a;事件…

FLAN-T5:規模化指令微調的語言模型

摘要 在將數據集表述為指令的形式上進行語言模型微調&#xff0c;已被證明能夠提升模型性能及其對未見任務的泛化能力。本文探討了指令微調&#xff0c;特別關注以下三個方面&#xff1a;(1) 任務數量的擴展&#xff0c;(2) 模型規模的擴展&#xff0c;以及 (3) 基于鏈式思維&…

設計模式文章

1. 工廠模式 | 菜鳥教程

Xilinx Vivado開發環境快速導出hdf文件(bat批處理)

Xilinx FPGA使用Vivado開發環境創建MicroBlaze軟核或ZYNQ PS側SDK邏輯工程時&#xff0c;需要FPGA側搭建的硬件平臺文件&#xff0c;即hdf文件&#xff0c;常規方式是編譯完成生成bit流文件后&#xff0c;通過File->Export->Export Hardware菜單來導出&#xff0c;在彈出…

UniApp 中實現智能吸頂 Tab 標簽導航效果

前言在移動端應用開發中&#xff0c;Tab 標簽導航是一種常見的交互模式。本文將詳細介紹如何在 UniApp 中實現一個功能完善的智能吸頂 Tab 導航組件&#xff0c;該組件具有以下特性&#xff1a;&#x1f3af; 智能顯示&#xff1a;根據滾動位置動態顯示/隱藏&#x1f4cc; 吸頂…