PyTorch中的Tensor

????????PyTorch中的Tensor? 是核心數據結構,類似于 NumPy 的多維數組,但具備 GPU 加速和自動求導等深度學習特性。

一、基本概念

  1. ?核心數據結構?

    • Tensor 是存儲和操作數據的基礎單元,支持標量(0D)、向量(1D)、矩陣(2D)及更高維數組?。
    • 與 NumPy 的?ndarray?類似,但支持動態計算圖和自動梯度計算?。
  2. ?關鍵特性?

    • ?GPU 加速?:可存儲在 CPU 或 GPU 中,GPU 計算顯著提升性能?。
    • ?自動求導?:通過?requires_grad=True?啟用梯度計算,支持反向傳播?。

二、創建方式

  1. ?直接創建?

    • 從 Python 列表或元組初始化:
      a = torch.tensor([1, 2, 3])          # 1D Tensor(向量)
      b = torch.tensor([[1.0, 2.0], [3.0, 4.0]])  # 2D Tensor(矩陣)?
      
    • 指定數據類型(如?dtype=torch.float32)和設備(如?device='cuda')?。
  2. ?初始化方法?

    • 全零/全一張量:
      zeros_tensor = torch.zeros((2, 3))   # 2x3 全零張量
      ones_tensor = torch.ones((2, 3))     # 2x3 全一張量?
      
    • 隨機張量:
      rand_tensor = torch.rand((2, 3))     # 值在 [0,1) 的均勻分布?
  3. ?從其他數據結構轉換?

    • 從 NumPy 數組轉換:

      ?使用?torch.from_numpy(),Tensor 與 NumPy 數組共享內存(修改一方會影響另一方)

      numpy_arr = np.array([1, 2, 3])
      tensor = torch.from_numpy(numpy_arr)  # 共享內存?

      使用?torch.tensor()?復制數據,生成獨立 Tensor:

      tensor = torch.tensor(numpy_arr)  # 不共享內存?
    • 從圖片轉換:
      使用 torchvision.transforms
      將 NumPy 格式的圖片(HWC 格式,值域 [0, 255])轉換為 Tensor(CHW 格式,值域 [0.0, 1.0]):
      from PIL import Image
      from torchvision import transformsimg = Image.open("image.jpg")  # PIL.Image 對象 (H,W,C)
      tensor_trans = transforms.ToTensor()
      tensor_img = tensor_trans(img)  # 轉為 Tensor (C, H, W)
      

三、維度與形狀

  1. ?常見維度類型?

    • ?0D 張量?:標量(如?torch.tensor(5))?。
    • ?1D 張量?:向量(如時間序列數據)?。
    • ?2D 張量?:矩陣(如表格數據)?。
    • ?3D 張量?:多通道圖像(形狀?(C, H, W))?。
    • ?4D 張量?:批量圖像(形狀?(N, C, H, W)N?為批量大小)?。
    • ?5D 張量?:視頻或體積數據(如醫療圖像)?。
  2. ?形狀操作?

    • 調整形狀:reshape()?或?view()(需保證元素總數不變)?。
    • 轉置:tensor.T?或?transpose()?。

四、運算與操作

  1. ?數學運算?

    • 逐元素運算(如?+,?*,?torch.sin())?。
    • 矩陣乘法:torch.matmul()?或?@?運算符?。
  2. ?索引與切片?

    • 類似 NumPy 的索引方式:
      tensor = torch.rand(3, 4)
      row = tensor[0, :]          # 第一行
      column = tensor[:, 1]       # 第二列?
      
  3. ?自動求導?

    • 啟用梯度跟蹤:
      x = torch.tensor(2.0, requires_grad=True)
      y = x**2
      y.backward()                # 計算梯度
      print(x.grad)               # 輸出 4.0?
      

五、其他特性

  1. ?數據類型?

    • 支持多種類型(如?torch.float32torch.int64),可通過?dtype?參數指定?。
    • 通過 .float()、.int() 等方法改變 Tensor 的數據類型。
      tensor = torch.tensor([1, 2]).float()  # 轉為 float32?
  2. ?設備切換?

    • 使用?.to('cuda')?或?.cpu()?在 CPU 和 GPU 間移動張量?。
      tensor_cpu = torch.tensor([1, 2])
      tensor_gpu = tensor_cpu.to("cuda")  # 轉為 GPU Tensor?

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

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

相關文章

基于Python的圖書館信息管理系統研發

標題:基于Python的圖書館信息管理系統研發 內容:1.摘要 在數字化信息快速發展的背景下,傳統圖書館管理方式效率低下,難以滿足日益增長的信息管理需求。本研究旨在研發一款基于Python的圖書館信息管理系統,以提高圖書館信息管理的效率和準確性…

RCE復現

1.過濾flag <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);代碼審計過濾了"flag"關鍵詞&#xff0c;但限制較弱&#xff0c;容易繞過 ?csystem("ls&…

FPGA_YOLO(四) 部署yolo HLS和Verilog 分別干什么

首先,YOLO作為深度學習模型,主要包括卷積層、池化層、全連接層等。其中,卷積層占據了大部分計算量,尤其適合在FPGA上進行并行加速。而像激活函數(如ReLU)和池化層相對簡單,可能更容易用HLS實現。FPGA的優勢在于并行處理和定制化硬件加速,因此在處理這些計算密集型任務時…

自動化發布工具CI/CD實踐Jenkins介紹!

1. 認識Jenkins 1.1 Jenkins是什么&#xff1f; Jenkins 是一個開源的自動化服務器&#xff0c;主要用于持續集成和持續部署&#xff08;CI/CD&#xff09;。 它由Java編寫&#xff0c;因此它可以在Windows、Linux和macOS等大多數操作系統上運行。 Jenkins 提供了一個易于使用…

【愚公系列】《高效使用DeepSeek》039-政務工作輔助

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

深度學習篇---模型訓練評估參數

文章目錄 前言一、Precision&#xff08;精確率&#xff09;1.1定義1.2意義1.3數值接近11.4數值再0.5左右1.5數值接近0 二、Recall&#xff08;召回率&#xff09;2.1定義2.2意義2.3數值接近12.4數值在0.5左右2.5數值接近0 三、Accuracy&#xff08;準確率&#xff09;3.1定義3…

Windows 圖形顯示驅動開發-WDDM 2.4功能-GPU 半虛擬化(十一)

注冊表設置 GPU虛擬化標志 GpuVirtualizationFlags 注冊表項用于設置半虛擬化 GPU 的行為。 密鑰位于&#xff1a; DWORD HKLM\System\CurrentControlSet\Control\GraphicsDrivers\GpuVirtualizationFlags 定義了以下位&#xff1a; 位描述0x1 ? 為所有硬件適配器強制設置…

Vue 的 nextTick 是如何實現的?

參考答案&#xff1a; nextTick 的本質將回調函數包裝為一個微任務放入到微任務隊列&#xff0c;這樣瀏覽器在完成渲染任務后會優先執行微任務。 nextTick 在 Vue2 和 Vue3 里的實現有一些不同&#xff1a; 1. Vue2 為了兼容舊瀏覽器&#xff0c;會根據不同的環境選擇不同包裝策…

安卓開發之LiveData與DataBinding

LiveData——生命周期感知 LiveData 是 Android Jetpack 提供的一個生命周期感知的數據持有者類&#xff0c;它可以用于持有數據并在數據發生變化時通知觀察者。LiveData 常與 ViewModel 配合使用&#xff0c;幫助簡化 UI 層和數據層之間的交互&#xff0c;確保 UI 在合適的生…

TCP協議與wireshark抓包分析

一、tcp協議格式 1. 源端口號 &#xff1a; 發送方使用的端口號 2. 目的端口號 &#xff1a; 接收方使用的端口號 3. 序號: 數據包編號 &#xff0c; tcp 協議為每個數據都設置編號,用于確認是否接收到相應的包 4. 確認序列號 : 使用 tcp 協議接收到數據包&#xff0c…

《HelloGitHub》第 108 期

興趣是最好的老師&#xff0c;HelloGitHub 讓你對開源感興趣&#xff01; 簡介 HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。 github.com/521xueweihan/HelloGitHub 這里有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等&#xff0c;涵蓋多種編程語言 Python、…

VITA 模型解讀,實時交互式多模態大模型的 pioneering 之作

寫在前面:實時交互llm 今天回顧一下多模態模型VITA,當時的背景是OpenAI 的 GPT-4o 驚艷亮相,然而,當我們將目光投向開源社區時,卻發現能與之匹敵的模型寥寥無幾。當時開源多模態大模型(MLLM),大多在以下一個或多個方面存在局限: 模態支持不全:大多聚焦于文本和圖像,…

VLAN的高級特性

前言&#xff1a; 1&#xff1a;華為VLAN聚合通過邏輯分層設計&#xff0c;將廣播域隔離與子網共享結合&#xff0c;既解決了IP地址浪費問題&#xff0c;又實現了靈活的網絡管理 2&#xff1a;MUX VLAN&#xff08;Multiplex VLAN&#xff09;提供了一種通過VLAN進行網絡資源控…

制作cass高程點塊定義——cad c#二次開發——待調試

public class Demo{[CommandMethod("xx")]public void Demo1(){using var tr1 new DBTrans();var doc Application.DocumentManager.MdiActiveDocument; var db doc.Database;var ed doc.Editor;var 圓心 new Point3d(0, 0, 0); var 半徑 10.0;using (var tr …

pod幾種常用狀態

在 Kubernetes 中&#xff0c;Pod 是最小的可部署單元&#xff0c;Pod 的狀態反映了其當前的運行狀況。以下是幾種常見的 Pod 狀態&#xff1a; 1. Pending 描述: Pod 已被 Kubernetes API Server 接收并創建&#xff0c;但還沒有開始運行在任何節點上。原因: Pod 資源不足&a…

04 單目標定實戰示例

看文本文,您將獲得以下技能: 1:使用opencv進行相機單目標定實戰 2:標定結果參數含義和數值分析 3:Python繪制各標定板姿態,查看圖像采集多樣性 4:如果相機畫幅旋轉90,標定輸入參數該如何設置? 5:圖像尺寸縮放,標定結果輸出有何影響? 6:單目標定結果應用類別…

DevEco Studio編輯器的使用-代碼code Linter檢查

Code Linter代碼檢查 Code Linter針對ArkTS/TS代碼進行最佳實踐/編程規范方面的檢查。檢查規則支持配置&#xff0c;配置方式請參考配置代碼檢查規則。 開發者可根據掃描結果中告警提示手工修復代碼缺陷&#xff0c;或者執行一鍵式自動修復&#xff0c;在代碼開發階段&#x…

wokwi arduino mega 2560 - 模數與數模轉換AD和DA

截圖&#xff1a; 20.53 黃燈滅 不報警 205.77 黃燈亮 報警 鏈接&#xff1a; https://wokwi.com/projects/415345595312267265 代碼&#xff1a; 詳細注釋版&#xff1a;AD和I2C仿真實驗案例程序 cpp #include <LiquidCrystal_I2C.h>// 定義I2C地址和LCD的行列數 #de…

如何使不同的窗體控件,適應不同分辨率的屏幕?

問題 當屏幕分辨率提高或降低時&#xff0c;原分辨率顯示正常的控件&#xff0c;將變得很小或很大&#xff0c;字體也變得太大或太小。 解決辦法 當分辨率變化時&#xff0c;采用遞歸的方法&#xff0c;對所有的控件放大或縮小。 public static void MainForm_Load(object s…

虛擬機(一):Java 篇

虛擬機&#xff08;一&#xff09;&#xff1a;Java 篇 虛擬機&#xff08;二&#xff09;&#xff1a;Android 篇 架構 運行時數據區&#xff1a; 棧&#xff1a; 堆&#xff1a; 堆&#xff1a;通過new創建的對象都在堆中分配。OutOfMemoryError TLAB(Thread Local All…