PyTorch的inplace的理解

inplace的理解

       我們平時看到的 nn.ReLU(inplace=True)nn.LeakyReLU(inplace=True),這些語句中的inplace是什麼意思?

  • inplace=True指的是進行原地操作,選擇進行原地覆蓋運算。 比如 x+=1則是對原值x進行操作,然後將得到的結果又直接覆蓋該值。y=x+5,x=y則不是對x的原地操作。
  • inplace=True操作的好處就是可以節省運算內存,不用多儲存其他無關變量。
  •  注意:當使用 inplace=True後,對於上層網絡傳遞下來的tensor會直接進行修改,改變輸入數據,具體意思如下面例子所示:

Eg. inplace=True操作 會修改輸入數據。

import torch
import torch.nn as nn

relu = nn.ReLU(inplace=True)
input = torch.randn(7)

print("輸入數據:",input)

output = relu(input)
print("ReLU輸出:", output)

print("ReLU處理後,輸入數據:")
print(input)

輸出:
在這裏插入圖片描述

inplace=True means that it will modify the input directly, without allocating any additional output. It can sometimes slightly decrease the memory usage, but may not always be a valid operation (because the original input is destroyed). However, if you don’t see an error, it means that your use case is valid.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章