Pytorch中view函數(shù)實(shí)例講解
一、函數(shù)簡介
Pytorch中的view函數(shù)主要用于Tensor維度的重構(gòu),即返回一個(gè)有相同數(shù)據(jù)但不同維度的Tensor。
根據(jù)上面的描述可知,view函數(shù)的操作對象應(yīng)該是Tensor類型。如果不是Tensor類型,可以通過tensor = torch.tensor(data)來轉(zhuǎn)換。
二、實(shí)例講解
?view(參數(shù)a,參數(shù)b,…),其中,總的參數(shù)個(gè)數(shù)表示將張量重構(gòu)后的維度。
import torch temp = [1,2,3,4,5,6] # temp的類型為list,非Tensor temp = torch.tensor(temp) # 將temp由list類型轉(zhuǎn)為Tensor類型 print(temp) # torch.Size([6]) print(temp.view(2,3)) # 將temp的維度改為2*3 print(temp.view(2,3,1)) # 將temp的維度改為2*3*1 print(temp.view(2,3,1,1)) # 更多的維度也沒有問題,只要保證維度改變前后的元素個(gè)數(shù)相同就行,即2*3*1*1=6
?view(參數(shù)a,參數(shù)b,…),其中,如果某個(gè)參數(shù)為-1,則表示該維度取決于其它維度,由Pytorch自己補(bǔ)充。
import torch temp = [[11,12,13,14,15,16], [21,22,23,24,25,26]] temp = torch.tensor(temp) print(temp) # torch.Size([2, 6]) print(temp.view(3,-1,2)) # 這里的-1表示該維度取決于其它維度,即等于(2*6)÷3÷2=2 # torch.Size([3, 2, 2])
?view(-1)表示將Tensor轉(zhuǎn)為一維Tensor。
import torch temp = [1,2,3,4,5,6] # temp的類型為list,非Tensor temp = torch.tensor(temp) # 將temp由list類型轉(zhuǎn)為Tensor類型 print(temp) # 本身就是一維張量 print(temp.view(-1)) # 因此,轉(zhuǎn)變后還是一維,沒什么變換 temp1 = torch.tensor([[1,2,3],[4,5,6]]) print(temp1) # torch.Size([2, 3]) print(temp1.view(-1)) # 多維張量轉(zhuǎn)為一維張量
附:Pytorch中的view函數(shù)需要注意的點(diǎn)
一、函數(shù)說明
Pytorch中的view函數(shù)主要用于張量tensor的維度修改,通過view里面的參數(shù),可以修改成任意維度的張量,前提是修改后的張量大小和原張量大小一致,比如45的張量,可以修改成225,但是不能修改成32*3。
二、數(shù)據(jù)共享
通過view修改維度以后的張量,和原張量是共享底層數(shù)據(jù)的,也就是說,如果你修改了一個(gè)張量中的數(shù)據(jù),兩個(gè)張量數(shù)據(jù)都會(huì)改變。比如原張量V1=torch.zeros(4,5),修改后的張量V2=V1.view(2,2,5),如果讓V2[0][0][0]=1,則V1[0][0]也等于1。
三、參數(shù)
view的參數(shù)如果有-1,則表示這個(gè)維度的大小由其他位置決定,只能用剩下的數(shù)據(jù)維度。
還是V1=torch.zeros(4,5),V3=V1.view(2,-1,5),則V3的第二維度大小就是2了。每次只能有一個(gè)默認(rèn)的-1維度,不然沒法計(jì)算準(zhǔn)確的維度大小。
四、維度變化
還是V1=torch.zeros(4,5),V4=V1.view(20,1)表示的是二維張量20*1,而V5=V1.view(20),或V5=V1.view(20,)表示的是一維張量,長度為20。在訓(xùn)練模型的時(shí)候需要注意,因?yàn)檫@兩種方式都能進(jìn)入全連接層或者線性神經(jīng)網(wǎng)絡(luò),只不過出來的結(jié)果會(huì)對應(yīng)輸入的維度,在計(jì)算誤差的時(shí)候,對目標(biāo)的處理就不一樣了,需要相同維度,也就是在loss = nn.xxxxxLoss(output, label)時(shí),要注意ouput和label的維度是否一致。
總結(jié)
到此這篇關(guān)于Pytorch中view函數(shù)實(shí)例講解的文章就介紹到這了,更多相關(guān)Pytorch view函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用PIL將圖片或GIF轉(zhuǎn)為字符畫的方法詳解
PIL是專為Python語言設(shè)計(jì)的圖像處理庫,它涵蓋了廣泛的圖像處理功能,如圖像的加載、保存、編輯,以及執(zhí)行多樣化的圖像處理任務(wù),本文給大家介紹了Python使用PIL將圖片或GIF轉(zhuǎn)為字符畫的方法,需要的朋友可以參考下2025-03-03Python數(shù)據(jù)結(jié)構(gòu)與算法之圖結(jié)構(gòu)(Graph)實(shí)例分析
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之圖結(jié)構(gòu)(Graph),結(jié)合實(shí)例形式分析了圖結(jié)構(gòu)的概念、原理、使用方法及相關(guān)操作技巧,需要的朋友可以參考下2017-09-09Python編程中內(nèi)置的NotImplemented類型的用法
這篇文章主要介紹了Python編程中內(nèi)置的NotImplemented類型的用法,NotImplemented 是Python在內(nèi)置命名空間中的六個(gè)常數(shù)之一,下文更多詳細(xì)內(nèi)容需要的小伙伴可以參考一下2022-03-03Python中創(chuàng)建字典的幾種方法總結(jié)(推薦)
下面小編就為大家?guī)硪黄狿ython中創(chuàng)建字典的幾種方法總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問題
這篇文章主要介紹了解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03