婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > pytorch下的unsqueeze和squeeze的用法說明

pytorch下的unsqueeze和squeeze的用法說明

熱門標簽:申請辦個400電話號碼 千呼ai電話機器人免費 400電話辦理費用收費 柳州正規電銷機器人收費 高德地圖標注字母 騰訊地圖標注有什么版本 鎮江人工外呼系統供應商 外呼系統前面有錄音播放嗎 深圳網絡外呼系統代理商

#squeeze 函數:從數組的形狀中刪除單維度條目,即把shape中為1的維度去掉

#unsqueeze() 是squeeze()的反向操作,增加一個維度,該維度維數為1,可以指定添加的維度。例如unsqueeze(a,1)表示在1這個維度進行添加

import torch 
a=torch.rand(2,3,1)       
print(torch.unsqueeze(a,2).size())#torch.Size([2, 3, 1, 1]) 
print(a.size())         #torch.Size([2, 3, 1])
print(a.squeeze().size())    #torch.Size([2, 3]) 
print(a.squeeze(0).size())   #torch.Size([2, 3, 1])
 
print(a.squeeze(-1).size())   #torch.Size([2, 3])
print(a.size())         #torch.Size([2, 3, 1])
print(a.squeeze(-2).size())   #torch.Size([2, 3, 1])
print(a.squeeze(-3).size())   #torch.Size([2, 3, 1])
print(a.squeeze(1).size())   #torch.Size([2, 3, 1])
print(a.squeeze(2).size())   #torch.Size([2, 3])
print(a.squeeze(3).size())   #RuntimeError: Dimension out of range (expected to be in range of [-3, 2], but got 3)
 
print(a.unsqueeze().size())   #TypeError: unsqueeze() missing 1 required positional arguments: "dim"
print(a.unsqueeze(-3).size())  #torch.Size([2, 1, 3, 1])
print(a.unsqueeze(-2).size())  #torch.Size([2, 3, 1, 1])
print(a.unsqueeze(-1).size())  #torch.Size([2, 3, 1, 1])
print(a.unsqueeze(0).size())  #torch.Size([1, 2, 3, 1])
print(a.unsqueeze(1).size())  #torch.Size([2, 1, 3, 1])
print(a.unsqueeze(2).size())  #torch.Size([2, 3, 1, 1])
print(a.unsqueeze(3).size())  #torch.Size([2, 3, 1, 1])
print(torch.unsqueeze(a,3))
b=torch.rand(2,1,3,1)
print(b.squeeze().size())    #torch.Size([2, 3])

補充:pytorch中unsqueeze()、squeeze()、expand()、repeat()、view()、和cat()函數的總結

學習Bert模型的時候,需要使用到pytorch來進行tensor的操作,由于對pytorch和tensor不熟悉,就把pytorch中常用的、有關tensor操作的unsqueeze()、squeeze()、expand()、view()、cat()和repeat()等函數做一個總結,加深記憶。

1、unsqueeze()和squeeze()

torch.unsqueeze(input, dim,out=None) → Tensor

unsqueeze()的作用是用來增加給定tensor的維度的,unsqueeze(dim)就是在維度序號為dim的地方給tensor增加一維。例如:維度為torch.Size([768])的tensor要怎樣才能變為torch.Size([1, 768, 1])呢?就可以用到unsqueeze(),直接上代碼:

a=torch.randn(768)
print(a.shape) # torch.Size([768])
a=a.unsqueeze(0)
print(a.shape) #torch.Size([1, 768])
a = a.unsqueeze(2)
print(a.shape) #torch.Size([1, 768, 1])

也可以直接使用鏈式編程:

a=torch.randn(768)
print(a.shape) # torch.Size([768])
a=a.unsqueeze(1).unsqueeze(0)
print(a.shape) #torch.Size([1, 768, 1])

tensor經過unsqueeze()處理之后,總數據量不變;維度的擴展類似于list不變直接在外面加幾層[]括號。

torch.squeeze(input, dim=None, out=None) → Tensor

squeeze()的作用就是壓縮維度,直接把維度為1的維給去掉。形式上表現為,去掉一層[]括號。

同時,輸出的張量與原張量共享內存,如果改變其中的一個,另一個也會改變。

a=torch.randn(2,1,768)
print(a)
print(a.shape) #torch.Size([2, 1, 768])
a=a.squeeze()
print(a)
print(a.shape) #torch.Size([2, 768])

圖片中的維度信息就不一樣,紅框中的括號層數不同。

注意的是:squeeze()只能壓縮維度為1的維;其他大小的維不起作用。

a=torch.randn(2,768)
print(a.shape) #torch.Size([2, 768])
a=a.squeeze()
print(a.shape) #torch.Size([2, 768])

2、expand()

這個函數的作用就是對指定的維度進行數值大小的改變。只能改變維大小為1的維,否則就會報錯。不改變的維可以傳入-1或者原來的數值。

torch.Tensor.expand(*sizes) → Tensor

返回張量的一個新視圖,可以將張量的單個維度擴大為更大的尺寸。

a=torch.randn(1,1,3,768)
print(a) 
print(a.shape) #torch.Size([1, 1, 3, 768])
b=a.expand(2,-1,-1,-1)
print(b)
print(b.shape) #torch.Size([2, 1, 3, 768])
c=a.expand(2,1,3,768)
print(c.shape) #torch.Size([2, 1, 3, 768])

可以看到b和c的維度是一樣的

第0維由1變為2,可以看到就直接把原來的tensor在該維度上復制了一下。

3、repeat()

repeat(*sizes)

沿著指定的維度,對原來的tensor進行數據復制。這個函數和expand()還是有點區別的。expand()只能對維度為1的維進行擴大,而repeat()對所有的維度可以隨意操作。

a=torch.randn(2,1,768)
print(a)
print(a.shape) #torch.Size([2, 1, 768])
b=a.repeat(1,2,1)
print(b)
print(b.shape) #torch.Size([2, 2, 768])
c=a.repeat(3,3,3)
print(c)
print(c.shape) #torch.Size([6, 3, 2304])

b表示對a的對應維度進行乘以1,乘以2,乘以1的操作,所以b:torch.Size([2, 1, 768])

c表示對a的對應維度進行乘以3,乘以3,乘以3的操作,所以c:torch.Size([6, 3, 2304])

a:

b

c

4、view()

tensor.view()這個函數有點類似reshape的功能,簡單的理解就是:先把一個tensor轉換成一個一維的tensor,然后再組合成指定維度的tensor。例如:

word_embedding=torch.randn(16,3,768)
print(word_embedding.shape)
new_word_embedding=word_embedding.view(8,6,768)
print(new_word_embedding.shape)

當然這里指定的維度的乘積一定要和原來的tensor的維度乘積相等,不然會報錯的。16*3*768=8*6*768

另外當我們需要改變一個tensor的維度的時候,知道關鍵的維度,有不想手動的去計算其他的維度值,就可以使用view(-1),pytorch就會自動幫你計算出來。

word_embedding=torch.randn(16,3,768)
print(word_embedding.shape)
new_word_embedding=word_embedding.view(-1)
print(new_word_embedding.shape)
new_word_embedding=word_embedding.view(1,-1)
print(new_word_embedding.shape)
new_word_embedding=word_embedding.view(-1,768)
print(new_word_embedding.shape)

結果如下:使用-1以后,就會自動得到其他維度維。

需要特別注意的是:view(-1,-1)這樣的用法就會出錯。也就是說view()函數中只能出現單個-1。

5、cat()

cat(seq,dim,out=None),表示把兩個或者多個tensor拼接起來。

其中 seq表示要連接的兩個序列,以元組的形式給出,例如:seq=(a,b), a,b 為兩個可以連接的序列

dim 表示以哪個維度連接,dim=0, 橫向連接 dim=1,縱向連接

a=torch.randn(4,3)
b=torch.randn(4,3)
 
c=torch.cat((a,b),dim=0)#橫向拼接,增加行 torch.Size([8, 3])
print(c.shape)
d=torch.cat((a,b),dim=1)#縱向拼接,增加列 torch.Size([4, 6])
print(d.shape)

還有一種寫法:cat(list,dim,out=None),其中list中的元素為tensor。

tensors=[]
for i in range(10):
  tensors.append(torch.randn(4,3))
a=torch.cat(tensors,dim=0) #torch.Size([40, 3])
print(a.shape)
b=torch.cat(tensors,dim=1) #torch.Size([4, 30])
print(b.shape)

結果:

torch.Size([40, 3])
torch.Size([4, 30])

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 詳解pytorch中squeeze()和unsqueeze()函數介紹
  • pytorch中torch.max和Tensor.view函數用法詳解
  • pytorch中的squeeze函數、cat函數使用

標簽:郴州 平頂山 海南 哈爾濱 烏蘭察布 大慶 合肥 烏蘭察布

巨人網絡通訊聲明:本文標題《pytorch下的unsqueeze和squeeze的用法說明》,本文關鍵詞  pytorch,下的,unsqueeze,和,squeeze,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch下的unsqueeze和squeeze的用法說明》相關的同類信息!
  • 本頁收集關于pytorch下的unsqueeze和squeeze的用法說明的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产欧美一二三区| 一道本成人在线| 免费观看30秒视频久久| kk眼镜猥琐国模调教系列一区二区| 粉嫩一区二区三区在线看| 国产精品久久久久久福利一牛影视| 日韩欧美在线网站| 亚洲精品视频在线| 成人av在线资源网站| 久久先锋影音av鲁色资源| 亚洲成a人v欧美综合天堂| 国产精品主播直播| 久久精品视频网| 久久精品国产网站| 精品1区2区在线观看| 日韩成人一级片| 日韩精品一区二区在线| 老司机精品视频线观看86| 精品国产污污免费网站入口 | 成人深夜福利app| 亚洲欧美激情插| 91精品免费观看| 激情图片小说一区| 亚洲美女在线国产| 久久综合久久鬼色中文字| 国产精品88av| 日本系列欧美系列| 国产精品毛片久久久久久久| 精品国产露脸精彩对白| 美女mm1313爽爽久久久蜜臀| 久88久久88久久久| 国产精品久久久久影院亚瑟 | 99re热视频这里只精品| 视频一区二区欧美| 国产精品免费网站在线观看| 欧美日韩精品高清| 在线一区二区三区| 成人福利视频在线| 国产ts人妖一区二区| 婷婷国产在线综合| 亚洲一区二区三区视频在线播放| 久久久蜜桃精品| 欧美成人a∨高清免费观看| 欧美伊人久久久久久久久影院 | 亚洲欧洲精品一区二区三区不卡| 在线一区二区三区| 欧美唯美清纯偷拍| 欧美乱熟臀69xxxxxx| 麻豆国产一区二区| 天堂av在线一区| 青青青爽久久午夜综合久久午夜| 亚洲v中文字幕| 免费高清视频精品| 国产精品自拍网站| 成人高清视频免费观看| 日本乱人伦aⅴ精品| 欧美美女bb生活片| 欧美一区二区在线播放| 风间由美性色一区二区三区| 91激情五月电影| 成人动漫精品一区二区| 色综合久久久久久久| 911精品国产一区二区在线| 精品福利一二区| 一区二区三区四区在线免费观看| 亚洲国产视频直播| 精品一区二区精品| 在线免费亚洲电影| 久久一日本道色综合| 国产午夜亚洲精品理论片色戒| 中文av字幕一区| 国产一区视频在线看| 精品视频在线免费观看| 久久先锋资源网| 久国产精品韩国三级视频| 91天堂素人约啪| 中文一区二区在线观看| 五月激情六月综合| aaa亚洲精品| 欧美—级在线免费片| 另类小说图片综合网| 日韩欧美国产wwwww| 亚洲成在人线免费| 在线视频欧美区| 亚洲尤物在线视频观看| 成人黄色小视频| 亚洲欧美一区二区三区孕妇| 国产99久久久精品| 欧美国产激情二区三区 | 欧美极品美女视频| 成人精品一区二区三区四区| 国产精品美女久久久久aⅴ| 成人久久18免费网站麻豆 | jizz一区二区| 亚洲蜜臀av乱码久久精品 | 日韩精品三区四区| 欧美电视剧在线观看完整版| 韩国精品免费视频| www成人在线观看| 色婷婷国产精品久久包臀 | 一区二区三区加勒比av| 久久99久久99小草精品免视看| 粉嫩av一区二区三区在线播放| 国产日韩欧美综合一区| 国产性天天综合网| 99久精品国产| 91亚洲精品久久久蜜桃网站| 国产精品白丝jk黑袜喷水| 色94色欧美sute亚洲13| 日韩精品专区在线影院观看| 久久综合久久综合亚洲| 国产精品另类一区| 石原莉奈在线亚洲二区| 成人激情午夜影院| 日韩一区国产二区欧美三区| 国产精品福利一区二区| 婷婷久久综合九色综合伊人色| 裸体一区二区三区| 欧美系列日韩一区| 国产精品视频第一区| 男人操女人的视频在线观看欧美| 91视频你懂的| 国产精品私人影院| 久久99日本精品| 欧美精品乱人伦久久久久久| 国产精品久久免费看| 国产在线视频精品一区| 日韩精品一区二区三区四区视频| 一区二区三区成人在线视频| 国产成人高清视频| 精品国产露脸精彩对白| 日本成人在线看| 精品1区2区3区| 亚洲天堂福利av| 91在线视频观看| 国产精品久久久久久亚洲伦| 丁香婷婷综合网| 国产亚洲人成网站| 国产一区中文字幕| 精品成人a区在线观看| 久久99日本精品| 精品三级在线看| 九色porny丨国产精品| 欧美一区二区美女| 亚洲另类在线一区| 色哟哟日韩精品| 亚洲香肠在线观看| 欧洲精品在线观看| 亚洲电影一区二区三区| 欧美久久久久久蜜桃| 美女一区二区视频| 欧美一区二区在线播放| 麻豆国产一区二区| 欧美大白屁股肥臀xxxxxx| 爽爽淫人综合网网站| 日韩一卡二卡三卡四卡| 久久精品二区亚洲w码| 欧美mv日韩mv亚洲| 国产成人小视频| 亚洲精品网站在线观看| 在线观看亚洲专区| 亚洲国产一区二区在线播放| 日本久久电影网| 美女视频黄频大全不卡视频在线播放| 欧美日韩高清在线播放| 国产精品91xxx| 亚洲青青青在线视频| 欧美日韩免费观看一区二区三区| 日本视频中文字幕一区二区三区| 国产目拍亚洲精品99久久精品| 在线国产亚洲欧美| 国产成人精品一区二区三区四区 | 国产.欧美.日韩| 一区二区三区中文字幕电影| 日韩欧美亚洲国产另类| 99精品一区二区三区| 蜜桃久久av一区| 亚洲乱码日产精品bd| 久久夜色精品国产噜噜av| 91久久精品一区二区三| 国产成人在线视频免费播放| 日韩av一级电影| 亚洲乱码中文字幕| 国产婷婷色一区二区三区四区| 欧美视频完全免费看| 成人蜜臀av电影| 久久99九九99精品| 天天色天天操综合| 亚洲天堂中文字幕| 国产精品你懂的| 久久婷婷色综合| 日韩免费性生活视频播放| 欧美日韩国产综合草草| 91香蕉视频黄| 99久久精品费精品国产一区二区| 久久精品99国产精品日本| 天天影视色香欲综合网老头| 亚洲在线观看免费视频| 国产精品你懂的| 中文字幕在线不卡|