Pytorch中torch.repeat_interleave()函數(shù)使用及說明
torch.repeat_interleave()函數(shù)解析
1.函數(shù)說明
官網(wǎng):torch.repeat_interleave(),函數(shù)說明如下圖所示:
2. 函數(shù)原型
torch.repeat_interleave(input, repeats, dim=None) → Tensor
3. 函數(shù)功能
沿著指定的維度重復(fù)張量的元素
4. 輸入?yún)?shù)
1)input (類型:torch.Tensor):輸入張量
2)repeats(類型:int或torch.Tensor):每個(gè)元素的重復(fù)次數(shù)
3)dim(類型:int)需要重復(fù)的維度。默認(rèn)情況下dim=None,表示將把給定的輸入張量展平(flatten)為向量,然后將每個(gè)元素重復(fù)repeats次,并返回重復(fù)后的張量。
5. 注意
1) 如果不指定dim,則默認(rèn)將輸入張量扁平化(維數(shù)是1,因此這時(shí)repeats必須是一個(gè)數(shù),不能是數(shù)組),并且返回一個(gè)扁平化的輸出數(shù)組。
2) 返回的數(shù)組與輸入數(shù)組維數(shù)相同,并且除了給定的維度dim,其他維度大小與輸入數(shù)組相應(yīng)維度大小相同
3) repeats:如果傳入數(shù)組,則必須是tensor格式。并且只能是一維數(shù)組,數(shù)組長度與輸入數(shù)組input的dim維度大小相同
6. 代碼例子
6.1 輸入一維張量,不指定dim,重復(fù)次數(shù)為2次,表示將把給定的輸入張量展平(flatten)為向量,然后將每個(gè)元素重復(fù)2次,并返回重復(fù)后的張量。
a = torch.randn(5) a,torch.repeat_interleave(a,2)
輸出結(jié)果如下所示:
(tensor([ 0.4030, -1.1536, -2.4513, 1.1454, -0.8818]),
tensor([ 0.4030, 0.4030, -1.1536, -1.1536, -2.4513, -2.4513, 1.1454, 1.1454,
-0.8818, -0.8818]))
6.2 輸入二維張量,不指定dim,重復(fù)次數(shù)為2次,表示將把給定的輸入張量展平(flatten)為向量,然后將每個(gè)元素重復(fù)2次,并返回重復(fù)后的張量。
a = torch.randn(3,2) a,a.repeat_interleave(2)
輸出結(jié)果如下:
(tensor([[-1.03, -0.32],
[ 0.43, 0.78],
[ 0.91, -0.11]]),
tensor([-1.03, -1.03, -0.32, -0.32, 0.43, 0.43, 0.78, 0.78, 0.91, 0.91,
-0.11, -0.11]))
6.3 輸入二維張量,指定dim=0,重復(fù)次數(shù)為3次,表示把輸入張量每行元素重復(fù)3次
a = torch.randn(3,2) a,torch.repeat_interleave(a,3,dim=0)
輸出結(jié)果如下:
(tensor([[ 0.14, 1.47],
[-1.52, -0.62],
[-0.24, -0.27]]),
tensor([[ 0.14, 1.47],
[ 0.14, 1.47],
[ 0.14, 1.47],
[-1.52, -0.62],
[-1.52, -0.62],
[-1.52, -0.62],
[-0.24, -0.27],
[-0.24, -0.27],
[-0.24, -0.27]]))
6.4 輸入二維張量,指定dim=1,重復(fù)次數(shù)為3次,表示把輸入張量每列元素重復(fù)3次
a = torch.randn(3,2) a,torch.repeat_interleave(a,3,dim=1)
輸出結(jié)果如下:
(tensor([[-0.81, 0.56],
[-2.41, -0.56],
[ 0.38, -0.90]]),
tensor([[-0.81, -0.81, -0.81, 0.56, 0.56, 0.56],
[-2.41, -2.41, -2.41, -0.56, -0.56, -0.56],
[ 0.38, 0.38, 0.38, -0.90, -0.90, -0.90]]))
6.5 輸入二維張量,指定dim=0,重復(fù)次數(shù)為一個(gè)張量列表[n1,n2,n3],表示在(dim=0)對(duì)應(yīng)行上面重復(fù)n1,n2,n3遍,張量列表的長度必須與dim=0的維度的長度一樣,否則會(huì)報(bào)錯(cuò)
a = torch.randn(3,2) a,torch.repeat_interleave(a,torch.tensor([2,3,4]),dim=0)#表示第一行重復(fù)2遍,第二行重復(fù)3遍,第三行重復(fù)4遍
輸出結(jié)果如下:
(tensor([[-0.79, 0.54],
[-0.47, -0.25],
[-0.13, 1.03]]),
tensor([[-0.79, 0.54],
[-0.79, 0.54],
[-0.47, -0.25],
[-0.47, -0.25],
[-0.47, -0.25],
[-0.13, 1.03],
[-0.13, 1.03],
[-0.13, 1.03],
[-0.13, 1.03]]))
7. 與torch.repeat()函數(shù)區(qū)別
兩個(gè)函數(shù)方法最大的區(qū)別就是repeat_interleave是一個(gè)元素一個(gè)元素地重復(fù),而repeat是一組元素一組元素地重復(fù).
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python_查看sqlite3表結(jié)構(gòu),查詢語句的示例代碼
今天小編就為大家分享一篇Python_查看sqlite3表結(jié)構(gòu),查詢語句的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07numpy數(shù)組的重塑和轉(zhuǎn)置實(shí)現(xiàn)
本文主要介紹了numpy數(shù)組的重塑和轉(zhuǎn)置實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Python爬蟲之超級(jí)鷹驗(yàn)證碼應(yīng)用
眾所周知python是一個(gè)很強(qiáng)大的語言,它擁有眾多的庫,今天我嘗試了使用超級(jí)鷹第三方平臺(tái)進(jìn)行驗(yàn)證碼的開發(fā),需要的朋友可以參考下2022-08-08Python實(shí)現(xiàn)分割文件及合并文件的方法
這篇文章主要介紹了Python實(shí)現(xiàn)分割文件及合并文件的方法,涉及Python針對(duì)文件的分割與合并操作相關(guān)技巧,通過自定義函數(shù)split與join實(shí)現(xiàn)了文件的分割與合并操作,需要的朋友可以參考下2015-07-07Selenium獲取登錄Cookies并添加Cookies自動(dòng)登錄的方法
這篇文章主要介紹了Selenium獲取登錄Cookies并添加Cookies自動(dòng)登錄的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Python學(xué)習(xí)之二叉樹實(shí)現(xiàn)的示例詳解
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)二叉樹的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-04-04Python Flask基礎(chǔ)到登錄功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python Flask基礎(chǔ)到登錄功能的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05