英文二手汽車(chē)網(wǎng)站建設(shè)網(wǎng)絡(luò)項(xiàng)目免費(fèi)的資源網(wǎng)
目錄
1.? torch.expand(*sizes)
2.?torch.repeat(*sizes)
3. 兩者內(nèi)存占用的區(qū)別
在PyTorch中有兩個(gè)函數(shù)可以用來(lái)擴(kuò)展某一維度的張量,即 torch.expand() 和 torch.repeat()
1.? torch.expand(*sizes)
【含義】將輸入張量在大小為1的維度上進(jìn)行拓展,并返回?cái)U(kuò)展更大后的張量
【參數(shù)】sizes的shape為torch.Size 或 int,指拓展后的維度, 當(dāng)值為-1的時(shí)候,表示維度不變
import torchif __name__ == '__main__':x = torch.rand(1, 3)y1 = x.expand(4, 3)print(y1.shape) # torch.Size([4, 3])y2 = x.expand(6, -1)print(y2.shape) # torch.Size([6, 3])
2.?torch.repeat(*sizes)
【含義】沿著特定維度擴(kuò)展張量,并返回?cái)U(kuò)展后的張量
【參數(shù)】sizes的shape為torch.Size 或 int,指對(duì)當(dāng)前維度擴(kuò)展的倍數(shù)
import torchif __name__ == '__main__':x = torch.rand(2, 3)y1 = x.repeat(4, 2)print(y1.shape) # torch.Size([8, 6])
3. 兩者內(nèi)存占用的區(qū)別
torch.expand 不會(huì)占用額外空間,只是在存在的張量上創(chuàng)建一個(gè)新的視圖
torch.repeat 和 torch.expand 不同,它是拷貝了數(shù)據(jù),會(huì)占用額外的空間
示例如下:
import torchif __name__ == '__main__':x = torch.rand(1, 3)y1 = x.expand(4, 3)y2 = x.repeat(2, 3)print(x.storage().data_ptr(), y1.storage().data_ptr()) # 52364352 52364352print(x.storage().data_ptr(), y2.storage().data_ptr()) # 52364352 8852096