pytorch學習總結 運算的記憶體開銷

2021-10-01 19:38:05 字數 854 閱讀 4953

前⾯面說了了,索引、 view 是不不會開闢新記憶體的,⽽而像 y = x + y 這樣的運算是會新開記憶體的,然後

將 y 指向新記憶體。為了了演示這⼀一點,我們可以使⽤用python⾃自帶的 id 函式:如果兩個例項例的id⼀一致,那

麼它們所對應的記憶體位址相同;反之則不不同。

x = torch.tensor([1, 2])

y = torch.tensor([3, 4])

id_before = id(y)

y = y + x

print(id(y) == id_before) # false

如果想指定結果到原來的 y 的記憶體,我們可以使⽤用前⾯面介紹的索引來進⾏行行替換操作。在下⾯面的例例⼦子中,

我們把 x + y 的結果通過 [:] 寫進 y 對應的記憶體中。

x = torch.tensor([1, 2])

y = torch.tensor([3, 4])

id_before = id(y)

y[:] = y + x

print(id(y) == id_before) # true

我們還可以使⽤用運算子全名函式中的 out 引數或者⾃自加運算子 += (也即 add_() )達到上述效果,例如

torch.add(x, y, out=y) 和 y += x ( y.add_(x) )

x = torch.tensor([1, 2])

y = torch.tensor([3, 4])

id_before = id(y)

torch.add(x, y, out=y) # y += x, y.add_(x)

print(id(y) == id_before) # true

PyTorch學習總結 四 Utilities

這個類的例項不能手動建立。它們只能被pack padded sequence 例項化。torch.nn.utils.rnn.pack padded sequence 輸入 input seq length x batch size x input size 或 batch size x seq le...

pytorch總結學習系列 操作

算術操作 在pytorch中,同一種操作可能有很多種形式,下 用加法作為 加法形式 x torch.tensor 5.5,3 y torch.rand 5,3 print x y 加法形式 print torch.add x,y 還可指定輸出 result torch.empty 5,3 torch...

Pytorch學習筆記(一) 資料 運算

1.1 torch.floattensor torch.floattensor 2,3 隨機生成 torch.floattensor 2,3,4,5 1.2 torch.inttensor torch.inttensor 2,3 隨機生成 torch.inttensor 2,3,4,5 1.3 to...