pytorch torch.expand和torch.repeat的區別詳解
阿新 • • 發佈:2020-01-09
1.torch.expand
函式返回張量在某一個維度擴充套件之後的張量,就是將張量廣播到新形狀。函式對返回的張量不會分配新記憶體,即在原始張量上返回只讀檢視,返回的張量記憶體是不連續的。類似於numpy中的broadcast_to函式的作用。如果希望張量記憶體連續,可以呼叫contiguous函式。
例子:
import torch x = torch.tensor([1,2,3,4]) xnew = x.expand(2,4) print(xnew)
輸出:
tensor([[1,4],
[1,4]])
2.torch.repeat
torch.repeat用法類似np.tile,就是將原矩陣橫向、縱向地複製。與torch.expand不同的是torch.repeat返回的張量在記憶體中是連續的。
例子1:
將張量橫向的複製
import torch x = torch.tensor([1,3]) xnew = x.repeat(1,3) print(xnew)
輸出:
tensor([[1,1,3]])
例子2:
將張量縱向的複製
import torch x = torch.tensor([1,3]) xnew = x.repeat(3,1) print(xnew)
輸出:
tensor([[1,3],3]])
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。