Pytorch初步使用

文章目錄

    • 創建張量
    • 指定設備
    • 沿軸計算

創建張量

如果說數組是numpy的操作對象,那么張量Tensor就是pytorch的操作單元,從數據內容來說,與高維數組是如出一轍的,但作為一個類,其構造函數支持通過聲明張量的維度來進行初始化,示例如下

import torch as t
z = t.Tensor(3, 4)
print(z)
'''
tensor([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])
'''

在實際應用中,隨機矩陣有著廣泛的需求,torch中的rand可以生成隨機張量

r = t.rand(3,4)

r是一個 3 × 4 3\times4 3×4的隨機矩陣,內容如下

[ 0.6220 0.3771 0.4598 0.0340 0.6928 0.1479 0.9832 0.3954 0.8050 0.3466 0.9227 0.1516 ] \begin{bmatrix} 0.6220& 0.3771& 0.4598& 0.0340\\ 0.6928& 0.1479& 0.9832& 0.3954\\ 0.8050& 0.3466& 0.9227& 0.1516\\ \end{bmatrix} ?0.62200.69280.8050?0.37710.14790.3466?0.45980.98320.9227?0.03400.39540.1516? ?

指定設備

如果安裝了顯卡版本的pytorch,那么由pytorch創建的矩陣可以指明寫在顯卡中

ct = t.rand(5000, 5000, device=t.device('cpu'))
dt = t.rand(5000, 5000, device=t.device('cuda'))

顯卡的并行結構在矩陣計算中展現出極大的威力,下面測試一下 5000 × 5000 5000\times5000 5000×5000的矩陣在計算時的速度差異

from timeit import timeit
timeit(lambda: ct@ct, number=10)    # 返回 7.714848299976438
timeit(lambda: dt@dt, number=10)    # 返回 1.27076860005036

相當于CPU需要0.7秒計算一次,而Cuda只需0.1秒,這個差距還會隨著矩陣維度的增大而進一步增大。

沿軸計算

在統計中經常用到的求和、求平均值等,都會把一組數據樣本壓縮成一個值,這種操作對于張量來說就是降維操作。

如果把張量表示出來,那么一階張量即為向量,二階張量則為矩陣,三階張量則可排布在一個立方體中,如果在這個立方體中創建一個坐標系,則相當于有三個坐標軸。

而對張量進行降維操作時,比如求平均值,若不指定坐標軸,將對所有數據求平均值

t.mean(dt)
# tensor(0.5000, device='cuda:0')

通過axis來指定坐標軸,則可在相應的坐標軸上操作

t.mean(dt, axis=1)
# tensor([0.4965, 0.5018, ..., 0.5057, 0.4993], device='cuda:0')

除了這種降維操作之外,很多時候也需要對張量進行升維,比如把一個向量沿著另一個軸進行復制,并排布在矩陣中

v = t.arange(5)     # 0, 1, 2, 3, 4
v.repeat(3)         # 
# tensor([0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4])
v31 = v.repeat(3,1)

v31表示在第一個軸的方向復制1次,在第二個軸的方向復制3次,得到結果為

[ 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 ] \begin{bmatrix} 0& 1& 2& 3& 4\\0& 1& 2& 3& 4\\0& 1& 2& 3& 4 \end{bmatrix} ?000?111?222?333?444? ?

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

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

相關文章

clickhouse數據庫磁盤空間使用率過高問題排查

一、前言 clickhouse天天觸發磁盤使用率過高告警,所以需要進行排查,故將排查記錄一下。 二、排查過程 1、連接上進入clickhouse 2、執行語句查看各庫表使用磁盤情況 SELECT database, table, formatReadableSize(sum(bytes_on_disk)) as disk_space F…

藍橋杯物聯網競賽_STM32L071_8_ADC擴展模塊

原理圖: 擴展模塊原理圖: RP1和RP2分別對應著AIN1和AIN2,扭動它們,其對應滑動變阻器阻值也會變化 實驗板接口原理圖: 對應實驗板接口PB1和PB0 即AN1對應PB1, AN2對應PB0 CubMx配置: ADC通道IN8和IN9才對…

C#.net使用npgsql批量寫入數據入庫到postgresql數據庫

C#.net使用npgsql批量寫入數據入庫到postgresql數據庫 npgsql批量存儲數據1. 單條存儲2. 批量存儲 npgsql批量存儲數據 轉載自:https://blog.csdn.net/liuwanying0226/article/details/130825503 1. 單條存儲 當有類型限定時,例如jsonb,在…

uniApp項目的創建,運行到小程序

一、項目創建 1. 打開 HBuilder X 2. 右擊側邊欄點擊新建,選擇項目 3. 填寫項目名,點擊創建即可 注:uniapp中如果使用生命周期鉤子函數,建議使用哪種 ?(建議使用Vue的) 二、運行 1. 運行前先登錄 2. 登錄后點擊 manifest.js…

基于lambda簡化設計模式

前言 雖說使用設計模式可以讓復雜的業務代碼變得清晰且易于維護,但是某些情況下,開發可能會遇到我為了簡單的業務邏輯去適配設計模式的情況,本文筆者就以四種常見的設計模式為例,演示如何基于lambda來簡化設計模式的實現。 策略…

WorkPlus高效助力企業溝通的專業級即時通訊軟件

在當今高度信息化和全球化競爭的世界,企業需要一個高效便捷的溝通工具來促進團隊協作、提高工作效率。在這樣的背景下,WorkPlus作為一款專業級的即時通訊軟件應運而生。讓我們一起深入了解WorkPlus,探討其在企業溝通中的領先優勢和卓越能力。…

平衡二叉樹

AVL簡稱平衡二叉樹,縮寫為BBST,由蘇聯數學家 Adelse-Velskil 和 Landis 在 1962 年提出。 二叉樹是動態查找的典范,但在極限情況下,二叉樹的查找效果等同于鏈表,而平衡二叉樹可以完美的達到 log ? 2 n \log_2 n log2…

ElementPlus table 中嵌套 input 輸入框

文章目錄 需求分析 需求 vue3 項目中 使用UI組件庫 ElementPlus 時&#xff0c;table 中嵌入 input輸入框 分析 <template><div class"p-10"><el-table :data"tableData" border><el-table-column prop"date" label&qu…

課堂練習4.1:段式內存管理

4-1 課堂練習4.1&#xff1a;段式內存管理 段式內存管理以段為單位分配內存空間&#xff0c;段內連續&#xff0c;段間可以不連續。段可以很大&#xff0c;比如數據段、代碼段、棧段等。本實訓分析 Linux 0.11 的段式內存管理技術。 第1關1 號進程 mynext 變量的邏輯地址與線性…

cache教程 3.HTTP服務器

上一節我們實現了單機版的緩存服務&#xff0c;但是我們的目標是分布式緩存。那么&#xff0c;我們就需要把緩存服務部署到多態機器節點上&#xff0c;對外提供訪問接口。客戶端就可以通過這些接口去實現緩存的增刪改查。 分布式緩存需要實現節點間通信&#xff0c;而通信方法…

【面試經典150 | 二叉樹】翻轉二叉樹

文章目錄 寫在前面Tag題目來源題目解讀解題思路方法一&#xff1a;遞歸方法二&#xff1a;迭代 寫在最后 寫在前面 本專欄專注于分析與講解【面試經典150】算法&#xff0c;兩到三天更新一篇文章&#xff0c;歡迎催更…… 專欄內容以分析題目為主&#xff0c;并附帶一些對于本題…

4-SpringMVC

文章目錄 項目源碼地址回顧-MVC什么是MVC&#xff1f;MVC各部分組成 回顧-ServletMaven創建Web項目1、創建Maven父工程pom&#xff0c;并導入依賴2、用Maven新建一個Web Module3、代碼&#xff1a;HelloServlet.java3、代碼-hello.jsp3、代碼-web.xml4、配置Tomcat5、瀏覽器測試…

github使用方法【附安裝包】

如果你是一枚Coder&#xff0c;但是你不知道Github&#xff0c;那么我覺的你就不是一個菜鳥級別的Coder&#xff0c;因為你壓根不是真正Coder&#xff0c;你只是一個Code搬運工。說明你根本不善于突破自己&#xff01;為什么這么說原因很簡單&#xff0c;很多優秀的代碼以及各種…

高級系統架構設計師之路

前言&#xff1a;系 統 架 構 設 計 師 (System Architecture Designer)是項目開發活動中的眾多角色之 一 &#xff0c;它可 以是 一個人或 一個小組&#xff0c;也可以是一個團隊。架構師 (Architect) 包含建筑師、設計師、創造 者、締造者等含義&#xff0c;可以說&#xff0…

邊緣計算系統設計與實踐:引領科技創新的新浪潮

文章目錄 一、邊緣計算的概念二、邊緣計算的設計原則三、邊緣計算的關鍵技術四、邊緣計算的實踐應用《邊緣計算系統設計與實踐》特色內容簡介作者簡介目錄前言/序言本書讀者對象獲取方式 隨著物聯網、大數據和人工智能等技術的快速發展&#xff0c;傳統的中心化計算模式已經無法…

基于ssm人力資源管理系統論文

摘 要 隨著企業員工人數的不斷增多&#xff0c;企業在人力資源管理方面負擔越來越重&#xff0c;因此&#xff0c;為提高企業人力資源管理效率&#xff0c;特開發了本人力資源管理系統。 本文重點闡述了人力資源管理系統的開發過程&#xff0c;以實際運用為開發背景&#xff0…

【大數據】Hudi 核心知識點詳解(一)

Hudi 核心知識點詳解&#xff08;一&#xff09; 1.數據湖與數據倉庫的區別 &#xff1f;1.1 數據倉庫1.2 數據湖1.3 兩者的區別 2.Hudi 基礎功能2.1 Hudi 簡介2.2 Hudi 功能2.3 Hudi 的特性2.4 Hudi 的架構2.5 湖倉一體架構 3.Hudi 數據管理3.1 Hudi 表數據結構3.1.1 .hoodie …

【C語言】位運算實現二進制數據處理及BCD碼轉換

文章目錄 1&#xff0e;編程實驗&#xff1a;按short和unsigned short類型分別對-12345進行左移2位和右移2位操作&#xff0c;并輸出結果。2&#xff0e;編程實驗&#xff1a;利用位運算實現BCD碼與十進制數之間的轉換&#xff0c;假設數據類型為unsigned char。3&#xff0e;編…

FPGA | Verilog基礎語法

這里寫自定義目錄標題 Case語句系統任務$dumpfile | 為所要創建的VCD文件指定文件名。$dumpvar | 指定需要記錄到VCD文件中的信號$fscanf$fread菜鳥教程連接 Case語句 case(case_expr)condition1 : true_statement1 ;condition2 : true_stat…

多線程(進階二:CAS)

目錄 一、CAS的簡單介紹 CAS邏輯&#xff08;用偽代碼來描述&#xff09; 二、CAS在多線程中簡單的使用 三、原子類自增的代碼分析 都看到這了&#xff0c;點個贊再走吧&#xff0c;謝謝謝謝謝 一、CAS的簡單介紹 CAS的全稱&#xff1a;“Compare And Swap”&#xff0c;字…