1. 程式人生 > 程式設計 >pytorch torch.expand和torch.repeat的區別詳解

pytorch torch.expand和torch.repeat的區別詳解

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]])

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。