国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算

這篇具有很好參考價值的文章主要介紹了關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

tensor 乘
tensor 加
# view()    轉(zhuǎn)換維度
# reshape() 轉(zhuǎn)換維度
# permute() 坐標系變換
# squeeze()/unsqueeze() 降維/升維
# expand()   擴張張量
# narraw()   縮小張量
# resize_()  重設(shè)尺寸
# repeat(), unfold() 重復(fù)張量
# cat(), stack()     拼接張量

1 tensor.view()

view() 用于改變張量的形狀,但不會改變張量中的元素值。
用法1:
例如,你可以使用view 將一個形狀是(2,3)的張量變換成(3,2)的張量;

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

上面的操作相當于,先把形狀為**(2,3)的tensor展平,變成(1,6),然后再變成(3,2).**

用法2:
轉(zhuǎn)換前后張量中的元素個數(shù)不變。view()中若存在某一維的維度是-1,則表示該維的維度根據(jù)總元素個數(shù)和其他維度尺寸自適應(yīng)調(diào)整。注意,view()中最多只能有一個維度的維數(shù)設(shè)置成-1

z = x.view(-1,2)

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

舉例子:
在卷積神經(jīng)網(wǎng)絡(luò)中,經(jīng)常會在全連接層用到view進行張量的維度拉伸:
假設(shè)輸入特征是BCH*W的4維張量,其中B表示batchsize,C表示特征通道數(shù),H和W表示特征的高和寬,在將特征送入全連接層之前,會用.view將轉(zhuǎn)換為B*(CHW)的2維張量,即保持batch不變,但將每個特征轉(zhuǎn)換為一維向量。

2 tensor.reshape()

reshape()與view()使用方法相同。
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

3 tensor.squeeze()和tensor.unsqueeze()

3.1 tensor.squeeze() 降維

(1)若squeeze()括號內(nèi)為空,則將張量中所有維度為1的維數(shù)進行壓縮,如將1,2,1,9的張量降維到2,9維;若維度中無1維的維數(shù),則保持源維度不變,如將234維的張量進行squeeze,則轉(zhuǎn)換后維度不會變。
(2)若squeeze(idx),則將張量中對應(yīng)的第idx維的維度進行壓縮,如1,2,1,9的張量做squeeze(2),則會降維到1,2,9維的張量;若第idx維度的維數(shù)不為1,則squeeze后維度不會變化。
例如:
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

3.2 tensor.unsqueeze(idx)升維

在第idx維進行升維,將tensor由原本的維度n,升維至n+1維。如張量的維度維2*3,經(jīng)unsqueeze(0)后,變?yōu)?,2,3維度的張量。
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

4 tensor.permute()

坐標系轉(zhuǎn)換,即矩陣轉(zhuǎn)置,使用方法與numpy array的transpose相同。permute()括號內(nèi)的參數(shù)數(shù)字指的是各維度的索引值。permute是深度學(xué)習(xí)中經(jīng)常需要使用的技巧,一般的會將BCHW的特征張量,通過轉(zhuǎn)置轉(zhuǎn)化為BHWC的特征張量,即將特征深度轉(zhuǎn)換到最后一個維度,通過調(diào)用**tensor.permute(0, 2, 3, 1)**實現(xiàn)。
torch.transpose只能操作2D矩陣的轉(zhuǎn)置,而permute()函數(shù)可以對任意高維矩陣進行轉(zhuǎn)置;
簡單理解:permute()相當于可以同時操作tensor的若干維度,transpose只能同時作用于tensor的兩個維度。

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

permute和view/reshape雖然都能將張量轉(zhuǎn)化為特定的維度,但原理完全不同,注意區(qū)分。view和reshape處理后,張量中元素順序都不會有變化,而permute轉(zhuǎn)置后元素的排列會發(fā)生變化,因為坐標系變化了。

5 torch.cat([a,b],dim)

在第dim維度進行張量拼接,要注意維度保持一致。
假設(shè)a為h1w1的二維張量,b為h2w2的二維張量,torch.cat(a,b,0)表示在第一維進行拼接,即在列方向拼接,所以w1和w2必須相等。torch.cat(a,b,1)表示在第二維進行拼接,即在行方向拼接,所以h1和h2必須相等
假設(shè)a為c1h1w1的二維張量,b為c2h2w2的二維張量,torch.cat(a,b,0)表示在第一維進行拼接,即在特征的通道維度進行拼接,其他維度必須保持一致,即w1=w2,h1=h2。torch.cat(a,b,1)表示在第二維進行拼接,即在列方向拼接,必須保證w1=w2,c1=c2;torch.cat(a,b,2)表示在第三維進行拼接,即在行方向拼接,必須保證h1=h2,c1=c2;
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

6 torch.stack()

該函數(shù)在維度上連接若干個形狀相同的張量,最終結(jié)果會升維;即若干個張量在某一維度上連接生成一個擴維的張量。 堆疊的感覺。
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

7 torch.chunk()和torch.split()

torch.chunk(input, chunks, dim)

**torch.chunk()**的作用是把一個tensor均勻分成若干個小tensor。input是被分割的tensor。chunks是均勻分割的份數(shù),如果在進行分割的維度上的size不能被chunks整除,則最后一份tensor會略?。ㄒ部赡転榭眨im是確定在某個維度上進行分割。該函數(shù)返回的是由小tensor組成的tuple。
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

**torch.split()**可以說是torch.chunk()的升級版,它不僅可以按份數(shù)均勻分割,還可以按特定的方案進行分割。

torch.split(input, split_size_or_sections, dim=0)

與torch.chunk()的區(qū)別就在于第二個參數(shù)上面。如果第二個參數(shù)是分割份數(shù),這就和torch.chunk()一樣了;第二種是分割方案,是一個list類型的數(shù)據(jù),待分割的張量將會被分割為len(list)份,每一份的大小取決于list中的元素。
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

8 與tensor相乘運算

  • 元素積(element-wise),即相同形狀的矩陣對應(yīng)元素相乘,得到的元素為結(jié)果矩陣中各個元素的值,對應(yīng)函數(shù)為torch.mul()(和*的效果一樣)。

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

  • 矩陣乘法,對應(yīng)函數(shù)為torch.mm()(只能用于2d的tensor)或者torch.matmul()(和符號@效果一樣)。對于torch.matmul(),定義其矩陣乘法僅在最后的兩個維度上,前面的維度需要保持一致。如果前面的維度符合broadcast_tensor機制,也會自動擴展維度,保證兩個矩陣前面的維度一致。

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

9 與tensor相加運算

遵循下面兩點:

  • 當兩個tensor的維度相同時,對應(yīng)軸的值要一樣(每個維度的大小相等),或者某些維度大小為1。相加時把所有為1的軸進行復(fù)制擴充得到兩個維度完全相同的張量,然后對應(yīng)位置相加即可。
  • 當兩個相加的tensor維度不一致時,首先要把維度低的那個張量從右邊和維度高的張量對齊,用1擴充維度至和高維度張量的維度一致,然后進行<1>的操作。

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

10 tensor.expand()

擴展張量,通過值復(fù)制的方式,將單個維度擴大為更大的尺寸。使用expand()函數(shù)不會使原tensor改變,需要將結(jié)果重新賦值。下面是具體的實例:
以二維張量為例:tensor是1n或n1維的張量,分別調(diào)用tensor.expand(s, n)或tensor.expand(n, s)在行方向和列方向進行擴展。
expand()的填入?yún)?shù)是size

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

11 tensor.narrow(dim, start, len)

narrow()函數(shù)起到了篩選一定維度上的數(shù)據(jù)作用.

torch.narrow(input, dim, start, length)->Tensor

input是需要切片的張量,dim是切片維度,start是開始的索引,length是切片長度,實際應(yīng)用如下:

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

12 tensor.resize_()

尺寸變化,將tensor截斷為resize_后的維度.
關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

13 tensor.repeat()

tensor.repeat(a,b)將tensor整體在行方向復(fù)制a份,在列方向上復(fù)制b份

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

14 unbind()

torch.unbind()移除指定維后,返回一個元組,包含了沿著指定維切片的各個切片。

torch.unbind(input, dim=0)->seq

關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算,pytorch深度學(xué)習(xí),pytorch,人工智能,python

參考:

pytorch中與tensor維度變化相關(guān)的函數(shù)(持續(xù)更新) - weili21的文章 - 知乎
https://zhuanlan.zhihu.com/p/438099006

【pytorch tensor張量維度轉(zhuǎn)換(tensor維度轉(zhuǎn)換)】
https://blog.csdn.net/x_yan033/article/details/104965077文章來源地址http://www.zghlxwxcb.cn/news/detail-738640.html

到了這里,關(guān)于關(guān)于pytorch張量維度轉(zhuǎn)換及張量運算的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python深度學(xué)習(xí)-張量運算

    神經(jīng)網(wǎng)絡(luò)中的大部分操作都涉及到張量運算(tensor operations)。張量是多維數(shù)組,可以看作是向量或矩陣的擴展,因此可以描述和處理更加復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如圖像、音頻等。 在神經(jīng)網(wǎng)絡(luò)中,張量運算通常涉及以下幾種操作: 加法:對兩個張量中的每個元素進行加法操作。

    2024年02月12日
    瀏覽(13)
  • 深度學(xué)習(xí) pytorch的使用(張量2)

    tensor([[7, 6, 9, 4, 6], ? ? ? ? [1, 9, 0, 9, 2], ? ? ? ? [5, 7, 1, 7, 4], ? ? ? ? [1, 2, 7, 2, 1]]) tensor([7, 6, 9, 4, 6]) tensor([7, 1, 5, 1]) tensor([6, 0]) tensor([[7, 6], ? ? ? ? [1, 9], ? ? ? ? [5, 7]]) tensor([[5, 7], ? ? ? ? [1, 2]]) tensor([[7, 6, 9, 4, 6], ? ? ? ? [1, 2, 7, 2, 1]]) tensor([[6, 4], ? ? ? ? [9, 9], ?

    2024年01月23日
    瀏覽(25)
  • 深度學(xué)習(xí) pytorch的使用(張量1)

    ?tensor(10) tensor([[-1.0923, -0.0842, ?1.5959], ? ? ? ? [ 0.4562, ?1.0242, ?0.0691]], dtype=torch.float64) tensor([[10., 20., 30.], ? ? ? ? [40., 50., 60.]]) --------------------------------------------------? tensor([[-1.4189e-09, ?1.7614e-42, ?0.0000e+00], ? ? ? ? [ 0.0000e+00, ?0.0000e+00, ?0.0000e+00]]) tensor([10.]) tensor([10., 20

    2024年01月22日
    瀏覽(16)
  • 【深度學(xué)習(xí)】pytorch——Tensor(張量)詳解

    【深度學(xué)習(xí)】pytorch——Tensor(張量)詳解

    筆記為自我總結(jié)整理的學(xué)習(xí)筆記,若有錯誤歡迎指出喲~ Tensor,又名張量。它可以是一個數(shù)(標量)、一維數(shù)組(向量)、二維數(shù)組(矩陣)和更高維的數(shù)組(高階數(shù)據(jù))。Tensor和Numpy的ndarrays類似,但PyTorch的tensor支持GPU加速。 官方文檔 : https://pytorch.org/docs/stable/tensors.html

    2024年02月06日
    瀏覽(61)
  • 【人工智能與深度學(xué)習(xí)】當輸入層維度為1024,輸出層維度為100時,為什么全連接層參數(shù)量為1024*100+100

    在神經(jīng)網(wǎng)絡(luò)中,全連接層(也稱為稠密層或線性層)的參數(shù)量計算通常包括權(quán)重(weights)和偏置(biases)。對于一個全連接層,如果輸入層維度(即輸入特征的數(shù)量)為1024,輸出層維度(即輸出特征的數(shù)量)為100,那么參數(shù)的計算方式如下: 權(quán)重 :每個輸入特征都與每個輸

    2024年01月17日
    瀏覽(41)
  • 第一天,PyTorch張量的運算

    第一天,PyTorch張量的運算

    pytorch 第三方下載地址 張量運算,包括算術(shù)、線性代數(shù)、矩陣運算(轉(zhuǎn)置、索引、切片)、采樣等。這些操作中的每一個都可以在 GPU 上運行(速度通常高于 CPU), 默認情況下 ,張量是在 CPU 上創(chuàng)建的。我們需要使用方法將張量顯式移動到 GPU .to (在檢查 GPU 可用性之后)。

    2024年02月10日
    瀏覽(16)
  • 【PyTorch】關(guān)于張量的連續(xù)性(contiguous)

    view 返回的是視圖,而 reshape 一般 返回拷貝(取決于原始張量的存儲方式) 視圖:共享底層數(shù)據(jù) view 只能用于滿足 連續(xù)性 張量的視圖 連續(xù)性條件的含義是,張量底層一維數(shù)組元素的存儲順序與張量按行優(yōu)先一維展開的元素順序是否一致。 這個張量是連續(xù)的,因為它的底層

    2024年02月09日
    瀏覽(15)
  • 人工智能概論報告-基于PyTorch的深度學(xué)習(xí)手寫數(shù)字識別模型研究與實踐

    人工智能概論報告-基于PyTorch的深度學(xué)習(xí)手寫數(shù)字識別模型研究與實踐

    本文是我人工智能概論的課程大作業(yè)實踐應(yīng)用報告,可供各位同學(xué)參考,內(nèi)容寫的及其水,部分也借助了gpt自動生成,排版等也基本做好,大家可以參照。如果有需要word版的可以私信我,或者在評論區(qū)留下郵箱,我會逐個發(fā)給。word版是我最后提交的,已經(jīng)調(diào)整統(tǒng)一了全文格

    2024年02月05日
    瀏覽(110)
  • 人工智能深度學(xué)習(xí)100種網(wǎng)絡(luò)模型,精心整理,全網(wǎng)最全,PyTorch框架逐一搭建

    人工智能深度學(xué)習(xí)100種網(wǎng)絡(luò)模型,精心整理,全網(wǎng)最全,PyTorch框架逐一搭建

    大家好,我是微學(xué)AI,今天給大家介紹一下人工智能深度學(xué)習(xí)100種網(wǎng)絡(luò)模型,這些模型可以用PyTorch深度學(xué)習(xí)框架搭建。模型按照個人學(xué)習(xí)順序進行排序: 深度學(xué)習(xí)模型 ANN (Artificial Neural Network) - 人工神經(jīng)網(wǎng)絡(luò):基本的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),包括輸入層、隱藏層和輸出層。 學(xué)習(xí)點擊地

    2024年02月14日
    瀏覽(258)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包