[深度學習]搭建開發平臺及Tensor基礎

一、實驗目的

1. 掌握Windows下PyTorch 深度學習環境的配置

2. 掌握一種PyTorch開發工具

3. 理解張量并掌握Tensor的常用操作(創建、調整形狀、加、減、乘、除、取絕對值、比較操作、數理統計操作 ?

4. 掌握Tensor與Numpy的互相轉換操作

5. 掌握Tensor 的降維和增維操作

6. 掌握Tensor 的裁剪、索引操作

7. 掌握cuda()函數

二、實驗內容

1. 在Windows或Linux下配置PyTorch 深度學習環境

2. 掌握一種Deep Learning開發工具

3. 張量的創建、調整形狀、加減乘除、取絕對值操作、比較、數理統計操作、與Numpy的互相轉換、降維和增維、裁剪、索引,把Tensor 移到GPU上去。

三、主要實驗步驟及結果

1. 要定義一個64位浮點型Tensor,其值是矩陣:[[1,2],[3,4],[5,6]],并輸出結果。

源碼:

import torchx=torch.DoubleTensor([[1,2],[3,4],[5,6]])print(x)

結果:

2. 創建一個張量a,元素全部是1,尺寸為2×3。并打印出來。

源碼:

import torcha=torch.ones(2,3)print(a)

結果:

3.?創建一個張量b,元素全部是0,尺寸為2×3。并打印出來。

源碼:

import torchb=torch.zeros(2,3)print(b)

結果:

4.創建一個張量c,對角線元素全部是1,尺寸為3×3。并打印出來。

源碼:

import torchc=torch.eye(3,3)print(c)

結果:

5.創建一個張量d,隨機生成的浮點數的取值滿足均值為0、方差為1的正太分布,?尺寸為2×3。并打印出來。

源碼:

import torchd=torch.randn(2,3)print(d)

結果:

6.創建一個張量e,長度為5的隨機排列。并打印出來。

源碼:

import torche=torch.randperm(5)print(e)

結果:

7.創建一個張量f,從1開始到7結束,步長為2。并打印出來。

源碼:

import torchf=torch.arange(1,8,2)print(f)

結果:

8.要定義一個16位整型Tensor,其值是矩陣:[[1,2],[3,4],[5,6]] ,并輸出結果。

源碼:

import torchx=torch.tensor([[1,2],[3,4],[5,6]],dtype=torch.int16)print(x)

結果:

9.構造一個3x2矩陣,不初始化,并輸出結果

源碼:

import torchx=torch.empty(3,2)print(x)

結果:

10.構造一個3*2的隨機初始化的矩陣,并輸出結果

源碼:

import torchx=torch.rand(3,2)print(x)

結果:

11.?構造一個矩陣全為 0,而且數據類型是 long,并輸出結果

源碼:

import torchx=torch.zeros(4,3,dtype=torch.long)print(x)

結果:

12.構造一個數據類型是 long的全0的3*2矩陣,并輸出結果

源碼:

import torchx=torch.zeros(3,2,dtype=torch.long)print(x)

結果:

13.構造一個值為[1.5, 2]的張量,并輸出結果

源碼:

import torchx=torch.tensor([1.5,2])print(x)

結果:

14. 根據給出的輸入,得到輸出,并記錄。

輸入:

import torch as t

c = t.Tensor(3,2)

print(c)

輸出:

15. 根據給出的輸入,得到輸出,并記錄。

輸入:

import torch as t

d = t.Tensor(3,2)

e = t.Tensor(d.size( ))

print(e)

輸出:

16.以下每個函數以size=2*3為例,寫出輸入及輸出。

  1. torch.empty(size)返回形狀為size的空tensor
  2. torch.zeros(size)全部是0的tensor
  3. torch.zeros_like(input)返回跟input的tensor一個size的全零tensor
  4. torch.ones(size)全部是1的tensor
  5. torch.ones_like(input)返回跟input的tensor一樣size的全tensor
  6. torch.rand(size) [0,1)內的均勻分布隨機數

輸入:

import torch as tsize=(2,3)input=t.tensor([[1, 2, 3], [4, 5, 6]])a=t.empty(size)b=t.zeros(size)c=t.zeros_like(input)d=t.ones(size)e=t.ones_like(input)f=t.rand(size)print(a,'\n',b,'\n',c,'\n',d,'\n',e,'\n',f)

輸出:

17.創建一個二階張量,長度為8,元素為[0,1,2,3,4,5,6,7],將其改編成形狀為2*4的張量。

源碼:

import torchx=torch.tensor([0,1,2,3,4,5,6,7])y=x.view(2,4)print(y)

結果:

18. a = torch.Tensor([[2,2],[1,4]])

b = torch.Tensor([[3,5],[7,4]])

實現求a與b乘積的操作,并輸出結果

源碼:

import torcha=torch.tensor([[2,2],[1,4]])b=torch.tensor([[3,5],[7,4]])x=torch.matmul(a,b)print(x)

結果:

19.有兩個張量a = [1, 2],b = [3, 4],比較兩張量大小。

源碼:

import torcha=torch.tensor([1,2])b=torch.tensor([3,4])if torch.all(torch.gt(a,b)):print("a>b")elif torch.all(torch.lt(a,b)):print("a<b")else:print("a=b")

結果:

20.求出張量 a =([2,8])的均值。

源碼:

import torcha=torch.tensor([2,8],dtype=torch.float32)mean_a=torch.mean(a)print(mean_a)

結果:

21.計算Tensor:[-1.2027, -1.7687, ?0.4412, -1.3856]的tan( )值

源碼:

import torchx=torch.tensor([-1.2027,-1.7687,0.4412,-1.3856])y=torch.tan(x)print(y)

結果:

22. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.arange(4.)

print(torch.reshape(a, (2, 2)))

b = torch.tensor([[0, 1], [2, 3]])

print( torch.reshape(b, (-1,))) ?#將二維張量b的形狀改為一維張量,元素順序不變?

輸出:

23. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

x = torch.randn(3, 4)

print(x)

mask = x.ge(0.5)

print(mask)

print(torch.masked_select(x, mask)) # 根據掩碼(大于等于0.5)選擇張量中的對應元素并打印出來

輸出:

24. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

x = torch.randn(2, 3)

print( x)

print(torch.cat((x, x, x), 0)) #將張量x沿著第0維方向進行拼接,即按照行方向進行拼接并打印拼接后的張量內容

輸出:

25. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

print(torch.eye(3)) # 打印3*3的單位矩陣

輸出:

26. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

print(torch.range(1, 4))

print(torch.range(1, 4, 0.5)) ?#打印從1到4的浮點數序列的張量,步長為0.5

輸出:

27. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.randn(4, 4)

print(a)

b = torch.randn(4)

print(b)

print(torch.div(a, b)) #對張量a和張量b進行逐元素的除法運算,并打印出結果張量

輸出:

28. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

exp = torch.arange(1., 5.)

base = 2

print(torch.pow(base, exp)) # 計算并打印2的exp中各個元素對應的次方值

輸出:

29. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.randn(4)

print(a)

print(torch.round(a)) ?# 打印張量中的各個元素四舍五入最接近的整數值

輸出:

30. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.randn(4)

print(a)

print( torch.sigmoid(a)) ?#打印張量中每個元素通過Sigmoid激活函數轉換后的結果

輸出:

31. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.tensor([0.7, -1.2, 0., 2.3])

print(a)

print(torch.sign(a)) ?# 輸出張量通過sign函數轉換為其符號對應的數值

輸出:

32. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.randn(4)

print(a)

print(torch.sqrt(a)) ??# 輸出張量中每個元素的開平方根

輸出:

33. 寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.randn(1, 3)

print(a)

print(torch.sum(a)) # 打印張量中所有元素的和

輸出:

34.?寫出下面程序的結果,并寫出注釋語句含義。

輸入:

import torch

a = torch.randn(4)

print(a)

b = torch.randn(4)

print(b)

print(torch.max(a, b)) ?# 比較兩個張量中對應位置的元素,并返回一個新的張量,其中新的張量中為相應位置的最大值,并打印結果

輸出:

35.?寫出以下輸入的輸出。

輸入:

import torch

a = torch.zeros(2, 1, 2, 1, 2)

print("a =",a)

print("a.size( ) =",a.size( ))

b = torch.squeeze(a)

print("b =",b)

print("b.size( ) =",b.size( ))

c = torch.squeeze(a, 0)

print("c =",c)

print("c.size( ) =",c.size( ))

d = torch.unsqueeze(c, 1)

print("d =",d)

print("d.size( ) =",d.size( ))

輸出:

36.?查資料,說明torch.mul( ) 和 torch.mm( ) 的區別,并輸出以下程序結果。

輸入:

import torch

a = torch.rand(1, 2)

b = torch.rand(1, 2)

c = torch.rand(2, 3)

print(torch.mul(a, b)) ?

print(torch.mm(a, c)) ??

print(torch.mul(a, c)) ?

輸出:

使用torch.mul()函數計算的是兩個形狀相同的張量a和b的元素對應相乘的結果,但是張量a和c的形狀不兼容,進行運算時會報錯;使用torch.mm()計算矩陣乘法,要求第一個矩陣的列數等于第二個矩陣的行數。

四、實驗總結

實驗錯誤截圖如下:

1.如下圖,圖中的錯誤為在調用pytorch的DoubleTensor函數時,不符合語法規范

?

2.如下圖,在比較兩個張量時,不能直接使用大于、小于或等于運算符。可以使用PyTorch提供的函數來進行逐元素的比較,使用torch.gt()、torch.lt()和torch.eq()函數分別進行大于、小于和等于的比較。

3.如下圖,在計算張量均值時,輸入的數據類型不是浮點數或復數會報錯。代碼中輸入的張量 a 是一個整數類型的張量,我們需要將張量轉換為浮點數類型,然后再計算均值。

4.如下圖,報錯的原因是在計算矩陣元素乘法時,兩個矩陣的維度不匹配導致無法進行張量的計算。

?

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

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

相關文章

【Zephyr 系列 14】使用 MCUboot 實現 BLE OTA 升級機制:構建安全可靠的固件分發系統

??關鍵詞:Zephyr、MCUboot、OTA 升級、BLE DFU、雙分區、Bootloader、安全固件管理 ??面向讀者:希望基于 Zephyr 為 BLE 設備加入安全 OTA 升級功能的開發者 ??預計字數:5200+ 字 ?? 前言:為什么你需要 OTA? 隨著設備部署數量增多與產品生命周期延長,遠程升級(…

App Search 和 Workplace Search 獨立產品現已棄用

作者&#xff1a;來自 Elastic The Search Product Team App Search 和 Workplace Search 的核心功能已集成到 Elasticsearch 和 Kibana 中。 我們宣布在 9.0 版本中棄用 App Search 和 Workplace Search。 如果你是 Elastic 的客戶&#xff0c;當前正在使用 App Search 和 Wo…

Spring Boot + OpenAI 構建基于RAG的智能問答系統

一、技術架構設計 1.1 系統架構圖 [前端]│▼ (HTTP/REST) [Spring Boot Controller]│▼ (Service Call) [問答處理服務層]├─? [知識庫檢索模塊] ──? [向量數據庫]└─? [OpenAI集成模塊] ──? [OpenAI API]│▼ [結果組裝與返回] 1.2 技術選型 組件技術棧版本要求…

Oracle實用參考(13)——Oracle for Linux物理DG環境搭建(2)

13.2. Oracle for Linux物理DG環境搭建 Oracle 數據庫的DataGuard技術方案,業界也稱為DG,其在數據庫高可用、容災及負載分離等方面,都有著非常廣泛的應用,對此,前面相關章節已做過較為詳盡的講解,此處不再贅述。 需要說明的是, DG方案又分為物理DG和邏輯DG,兩者的搭建…

【論文閱讀29】區間預測CIPM(2025)

這篇論文主要研究的是滑坡位移的區間預測方法&#xff0c;提出了一種新型的預測模型&#xff0c;叫做復合區間預測模型&#xff08;CIPM&#xff09;&#xff0c;并以三峽庫區的白家堡滑坡為案例進行了應用和驗證。論文的核心內容和貢獻包括&#xff1a; 背景與問題 滑坡位移預…

Linux 文件系統底層原理筆記:磁盤結構、ext2 文件系統與軟硬鏈接解析

文章目錄 一、理解硬件1.1 磁盤、服務器、機柜、機房1.2 磁盤物理結構1.3 磁盤的存儲結構1.4 磁盤的邏輯結構1.4.1 理解過程1.4.2 真實過程 1.5 CHS && LBA地址 二、引入文件系統2.1 引入"塊"概念2.2 引入"分區"概念2.3 引入"inode"概念…

75Qt窗口_Qt窗口概覽

Qt 窗? 是通過 QMainWindow類 來實現的。 QMainWindow 是?個為??提供主窗?程序的類&#xff0c;繼承? QWidget 類&#xff0c;并且提供了?個預定義的布局。 QMainWindow 包含 ?個菜單欄&#xff08;menu bar&#xff09;、多個?具欄(tool bars)、多個浮動窗?&#x…

Appium+python自動化(九)- 定位元素工具

簡介 環境搭建好了&#xff0c;其他方面的知識也準備的差不多了&#xff0c;那么就開始下一步元素定位&#xff0c;元素定位主要介紹如何使用uiautomatorviewer&#xff0c;通過定位到頁面上的元素&#xff0c;然后進行相應的點擊等操作. 此外在介紹另一款工具&#xff1a;Insp…

apipost將token設置為環境變量

右上角 可以新增或者是修改當前的環境 環境變量增加一個token,云端值和本地值可以不用寫 在返回token的接口里設置后執行操作&#xff0c;通常是登錄的接口 右側也有方法提示 //設置環境變量 apt.environment.set("token", response.json.data.token); 在需要傳t…

【Docker 02】Docker 安裝

&#x1f308; 一、各版本的平臺支持情況 ? 1. Server 版本 Server 版本的 Docker 就只有個命令行&#xff0c;沒有界面。 Platformx86_64 / amd64arm64 / aarch64arm(32 - bit)s390xCentOs√√Debian√√√Fedora√√Raspbian√RHEL√SLES√Ubuntu√√√√Binaries√√√ …

青少年編程與數學 01-011 系統軟件簡介 08 Windows操作系統

青少年編程與數學 01-011 系統軟件簡介 08 Windows操作系統 1. Windows操作系統的起源與發展1.1 早期版本&#xff08;1985-1995&#xff09;1.2 Windows 9x系列&#xff08;1995-2000&#xff09;1.3 Windows NT系列&#xff08;1993-2001&#xff09;1.4 Windows XP及以后版…

微服務架構的性能優化:鏈路追蹤與可觀測性建設

&#x1f4cb; 目錄 引言&#xff1a;微服務性能挑戰微服務架構性能瓶頸分析可觀測性體系概述鏈路追蹤技術深度解析性能監控指標體系日志聚合與分析分布式追蹤系統實現性能優化策略與實踐自動化性能調優故障診斷與根因分析最佳實踐與案例研究未來發展趨勢 引言 隨著微服務架…

ubuntu屏幕復制

在ubnuntu20中沒有辦法正常使用鏡像功能,這里提供一下復制屏幕的操作. 使用xrandr查看所有的顯示器情況 這里我發現自己的電腦沒有辦法直接設置分辨率,但是外接的顯示器可以設置,從命令行來說就是設置: xrandr --output HDMI-0 --mode 1920x1080那怎么樣才能將原生電腦屏幕換…

Android 線性布局中常見的沖突屬性總結

1. gravity vs layout_gravity 沖突原因&#xff1a;兩者作用對象不同&#xff0c;混用會導致行為異常。 區別&#xff1a; android:gravity&#xff1a;父容器的屬性&#xff0c;控制子元素在容器內的對齊方式。android:layout_gravity&#xff1a;子元素的屬性&#xff0c;控…

0x-4-Oracle 23 ai-sqlcl 25.1.1 獨立安裝-配置和優化

一、獨立安裝sqlcl 1. ?安裝 Java 環境? SQLcl 需要 Java 1.8.0_220 或更高版本&#xff0c; Oracle Linux9.6 上已經默認安裝Oracle 23ai后Java 是11 lts版本 如果java jdk安裝錯誤將遇上SQLcl困擾n多人的bug sql /nolog 錯誤&#xff1a;找不到或加載主類 oracle.dbto…

如何評價華為最新長焦專利技術?能否顛覆手機長焦攝影的目前限制?

擊上方關注 “終端研發部” 設為“星標”&#xff0c;和你一起掌握更多數據庫知識 目前透露的消息來看是3.7倍和10倍&#xff01;&#xff01;&#xff01; 據悉&#xff0c;華為即將發布的Pura 80系列手機將率先采用這一革命性的專利技術。 華為的伸縮專利讓鏡頭模組學會了&qu…

基于SpringBoot實現的大創管理系統設計與實現【源碼+文檔】

基于SpringBootVue實現的大創管理系統采用前后端分離架構方式&#xff0c;系統設計了管理員、學生、指導老師、院系管理員兩種角色&#xff0c;系統實現了用戶登錄與注冊、個人中心、學生管理、指導老師管理、院系管理員管理、優秀項目管理、項目類型管理、項目信息管理、項目申…

4-C#的不同窗口傳值

C#的不同窗口傳值 1.通過構造函數傳值 this.Hide(); Form1 form01 new Form1(textBox2.Text); //Application.Run(form01); form01.Show();public Form1(string aaa) {InitializeComponent();label12.Text aaa; }2.全局類傳值 namespace WindowsFormsApp1 {public class G…

CentOS 7 如何pip3安裝pyaudio?

CentOS 7 如何pip3安裝pyaudio&#xff1f; # 先將yum軟件源改為阿里云鏡像源 http://mirrors.aliyun.com/centos-vault/7.9.2009/ bash <(curl -sSL https://linuxmirrors.cn/main.sh) # 基于一鍵換源腳本&#xff0c;全部回車即可# pip3安裝模塊是從源碼構建&#xff08;…

低代碼采購系統搭建:鯨采云+能源行業訂單管理自動化案例

在能源行業數字化轉型浪潮下&#xff0c;某大型能源集團通過鯨采云低代碼平臺&#xff0c;僅用3周時間就完成了采購訂單管理系統的定制化搭建。本文將揭秘這一成功案例的實施路徑與關鍵成效。 項目背景與挑戰 該企業面臨&#xff1a; 供應商分散&#xff1a;200供應商使用不同…