04動手學深度學習筆記(上)

04數據操作

import torch

(1)張量表示一個數據組成的數組,這個數組可能有多個維度。

x=torch.arange(12)
x
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

(2)通過shape來訪問張量的形狀和張量中元素的總數

x.shape
torch.Size([12])

(3)number of elements表示內存的大小

x.numel()
12

(4)要改變一個張量的形狀而不改變元素數量和元素值,我們要調用reshape函數

x=x.reshape(3,4)
x
tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])

(5)使用全0、全1、其他常量或者從特定分布中隨機采樣的數字

torch.zeros((2,3,4))
tensor([[[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]],[[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]]])
torch.ones((2,3,4))
tensor([[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]],[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]]])

(6)通過提供包含數值的Python列表或者嵌套列表來為所需張量中的每個元素賦予確定值

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

(7)創建元素進行相應的運算

x=torch.tensor([1.0,2,4,8])
y=torch.tensor([2,2,2,2])
x+y,x-y,x*y,x/y,x**y
(tensor([ 3.,  4.,  6., 10.]),tensor([-1.,  0.,  2.,  6.]),tensor([ 2.,  4.,  8., 16.]),tensor([0.5000, 1.0000, 2.0000, 4.0000]),tensor([ 1.,  4., 16., 64.]))
torch.exp(x)  #指數運算
tensor([2.7183e+00, 7.3891e+00, 5.4598e+01, 2.9810e+03])

(8)我們這里把多個張量連結在一起

X=torch.arange(12,dtype=torch.float32).reshape((3,4))
Y=torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]])
torch.cat((X,Y),dim=0),torch.cat((X,Y),dim=1)   #dim=0表示按行連接;dim=1表示按列連接
(tensor([[ 0.,  1.,  2.,  3.],[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.],[ 2.,  1.,  4.,  3.],[ 1.,  2.,  3.,  4.],[ 4.,  3.,  2.,  1.]]),tensor([[ 0.,  1.,  2.,  3.,  2.,  1.,  4.,  3.],[ 4.,  5.,  6.,  7.,  1.,  2.,  3.,  4.],[ 8.,  9., 10., 11.,  4.,  3.,  2.,  1.]]))

(9)通過邏輯運算符構建二元張量

X==Y
tensor([[False,  True, False,  True],[False, False, False, False],[False, False, False, False]])

對只有兩種所有元素求和會產生一個只有一個元素的張量

X.sum()
tensor(66.)

(10)即使形狀不同,我們可以調用廣播機制來執行按元素操作

a=torch.arange(3).reshape((3,1))
b=torch.arange(2).reshape((1,2))
a,b
(tensor([[0],[1],[2]]),tensor([[0, 1]]))
a + b  #這里廣播機制將a變成三行兩列的部分,第一列加0;第二列加1
tensor([[0, 1],[1, 2],[2, 3]])

(11)選用元素,其中-1用于選用最后一個元素,[1:3]用于選用第二個和第三個元素

X[-1],X[1:3]
(tensor([ 8.,  9., 10., 11.]),tensor([[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.]]))

(12)索引元素進行修改

X[1,2]=9
X
tensor([[ 0.,  1.,  2.,  3.],[ 4.,  5.,  9.,  7.],[ 8.,  9., 10., 11.]])

(13)對多個元素進行相應的賦值

X[0:2,:]=12
X
tensor([[12., 12., 12., 12.],[12., 12., 12., 12.],[ 8.,  9., 10., 11.]])

(14)運行一些操作可能會導致為新結果分配內存

before=id(Y)
Y=Y+X
id(Y)==before
False
#執行原地操作
Z=torch.zeros_like(Y)#類型一樣但全0
print('id(Z):',id(Z))
Z[:]=X+Y
print('id(Z):',id(Z))
id(Z): 2415349231888
id(Z): 2415349231888
#在后續計算中沒有重復使用X,可以減少操作的內存開銷
before=id(X)
X+=Y  #or X[:]=X+Y
id(X)==before
True

(15)轉換為NUMPY張量

A=X.numpy()
B=torch.tensor(A)
type(A),type(B)
(numpy.ndarray, torch.Tensor)

將大小為1的張量轉換為Python標量

a=torch.tensor([3.5])
a,a.item(),float(a),int(a)
(tensor([3.5000]), 3.5, 3.5, 3)

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

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

相關文章

MCU中的RTC(Real-Time Clock,實時時鐘)是什么?

MCU中的RTC(Real-Time Clock,實時時鐘)是什么? 在MCU(微控制器單元)中,RTC(Real-Time Clock,實時時鐘) 是一個獨立計時模塊,用于在系統斷電或低功耗狀態下持續記錄時間和日期。以下是關于RTC的詳細說明: 1. RTC的核心功能 精準計時:提供年、月、日、時、分、秒、…

Linux 進程調度管理

進程調度器可粗略分為兩類:實時調度器(kernel),系統中重要的進程由實時調度器調度,獲得CPU能力強。非實時調度器(user),系統中大部分進程由非實時調度器調度,獲得CPU能力弱。實時調度器實時調度器支持的調度策略&#…

基于 C 語言視角:流程圖中分支與循環結構的深度解析

前言(約 1500 字)在 C 語言程序設計中,控制結構是構建邏輯的核心骨架,而流程圖作為可視化工具,是將抽象代碼邏輯轉化為直觀圖形的橋梁。對于入門 C 語言的工程師而言,掌握流程圖與分支、循環結構的對應關系…

threejs創建自定義多段柱

最近在研究自定義建模,有一個多斷柱模型比較有意思,分享下,就是利用幾組點串,比如上中下,然后每組點又不一樣多,點續還不一樣,(比如第一個環的第一個點在左邊,第二個環在右邊)&#…

Language Models are Few-Shot Learners: 開箱即用的GPT-3(四)

Result續 Winograd-Style Tasks Winograd-Style Tasks 是自然語言處理中的一類經典任務。它源于 Winograd Schema Challenge(WSC),主要涉及確定代詞指的是哪個單詞,旨在評估模型的常識推理和自然語言理解能力。 這個任務中的具體通常包含高度歧義的代詞,但從語義角度看…

BGP高級特性之認證

一、概述BGP使用TCP作為傳輸協議,只要TCP數據包的源地址、目的地址、源端口、目的端 口和TCP序號是正確的,BGP就會認為這個數據包有效,但數據包的大部分參數對于攻擊 者來說是不難獲得的。為了保證BGP免受攻擊,可以在BGP鄰居之間使…

商旅平臺怎么選?如何規避商旅流程中的違規風險?

在中大型企業的商旅管理中,一個典型的管理“黑洞”——流程漏洞與超標正持續吞噬企業成本與管理效能:差標混亂、審批脫節讓超規訂單頻頻闖關,不僅讓企業商旅成本超支,還可能引發稅務稽查風險。隱性的合規風險,比如虛假…

Anaconda的常用命令

Anaconda 是一個用于科學計算、數據分析和機器學習的 Python 發行版,包含了大量的預安裝包。它配有 conda 命令行工具,方便用戶管理包和環境。以下是一些常用的 conda 命令和 Anaconda 的常見操作命令,幫助你高效管理環境和包。1. 環境管理創…

JVM之【Java虛擬機概述】

目錄 對JVM的理解 JVM的架構組成 類加載系統 執行引擎 運行時數據區 垃圾收集系統 本地方法庫 對JVM的理解 JVM保證了Java程序的執行,同時也是Java語言具有跨平臺性的根本原因;Java源代碼通過javac等前端編譯器生成的字節碼計算機并不能識別&…

RabbitMQ+內網穿透遠程訪問教程:實現異地AMQP通信+Web管理

RabbitMQ是一個開源的消息隊列中間件,基于Erlang開發,遵循AMQP(Advanced Message Queuing Protocol,高級消息隊列協議)標準,主要用于實現異步通信、消息解耦和系統間數據傳輸。它的核心作用是在分布式系統中…

go 語言 timer 與 ticker理論和實例大全

目錄 1. 時間之門的鑰匙:Timer與Ticker的本質 2. Timer:精準的單次計時 2.1 Timer的基礎用法 2.2 停止與重置Timer 2.3 Timer的高級技巧:優雅處理并發 3. Ticker:時間的節拍器 3.1 Ticker的基本用法 3.2 Ticker的高級應用:動態調整周期 4. Timer與Ticker的結合:打…

MySQL 45講 16-17

全字段排序 explain 中的 using fiesort ,掃描 數據,取出符合判斷條件的 數據,到sort buffer中,然后對排序字段采用快速排序進行 排序后直接將 所需字段進行返回 如果 字段長度所占內存大于所分配 的sort buffer ,需要借助 臨時文件 進行 數據的存放排序,此時會采用 歸并排序,將…

QT項目 -仿QQ音樂的音樂播放器(第四節)

一、RecBox中btUp和btDown按鈕clicked處理 選中左右鍵(btUp和btDown按鈕)然后右擊轉到槽->click() void RecBox::on_btUp_clicked() {}void RecBox::on_btDown_clicked() {} 二、imageList中圖片分組 // recbox.h 中新增 int currentIndex; // 標記…

DeepSeek SEO關鍵詞優化提升流量增長

內容概要DeepSeek SEO關鍵詞優化致力于通過科學的方法,顯著提升網站在搜索引擎中的可見度與自然流量。其核心在于深入理解并精準匹配用戶的真實搜索意圖,而非僅僅堆砌詞匯。具體來說,該策略運用深度意圖導向策略,確保內容與用戶需…

# Ubuntu 系統設置 USB PnP 音頻設備為默認設備的完整教程

Ubuntu 系統設置 USB PnP 音頻設備為默認設備的完整教程 在使用 Ubuntu 系統時,尤其是在嵌入式設備如 NVIDIA Jetson 系列上,我們經常需要將 USB PnP 音頻設備設置為默認設備。本文將詳細介紹如何通過命令行配置,使 USB PnP 音頻設備在系統重…

Hadoop JMX 配置的完整文檔

一、JMX 基礎概念與 Hadoop 支持 1、JMX 作用。 Java Management Extensions(JMX)提供標準 API 監控 JVM 應用運行時狀態(內存、線程、GC)及 Hadoop 組件指標(HDFS 容量、RPC 性能、節點狀態) 2、Hadoop 組…

arm架構系統打包qt程序--麒麟操作系統為例

檢查系統架構 uname -a如果顯示是aarch644或arm64,說明你使用的是ARM架構,,需要下載ARM版本。 下載對應架構的linuxdeployqt 編寫腳本 vim deploy.sh#!/bin/bash APP_NAME"sunny450_silc"# 確保deploy目錄存在 mkdir -p deploy# 復…

Kong API Gateway深度解析:插件系統與微服務架構的技術基石

在微服務(microservices)架構主導的今天,API網關(API Gateway)作為服務入口的“交通樞紐”,承擔著流量調度、安全防護、可觀測性(observability)等核心職責。Kong作為開源API網關領域…

Linux應用開發基礎知識——Makefile初級教程(九)

目錄 一、Makefile是啥? 1.1、了解幾種文件(.o 文件和.c文件 ) 1.2、關于Makefile的寫法 1.3、簡單使用Makefile基本指令 1.4、引入偽目標 1.5、Makefile的優點 1.6、Makefile的使用 二、Makefile創建和使用變量 2.1、創建變量的目的…

面試問題收集——卷積神經網絡

博主會經常分享自己在人工智能階段的學習筆記,歡迎大家訪問我滴個人博客!(養成系Blog!) 小牛壯士滴Blog~ - 低頭趕路 敬事如儀https://kukudelin.top/ 01-卷積基礎知識 問:簡述卷積基本操作,…