dropout中in-place是什么意思

HAR*_*RZI 4 machine-learning neural-network pytorch dropout

def dropout(input, p=0.5, training=True, inplace=False)
Run Code Online (Sandbox Code Playgroud)

就地:如果设置为True,将就地执行此操作。

请问在dropout中in-place是什么意思。它有什么作用?执行这些操作时有什么性能变化吗?

谢谢

小智 9

Keepinginplace=True本身会在张量本身中删除一些值input,而如果你 keep inplace=False,你将把 的结果保存在droput(input)要检索的其他变量中。

例子:

import torch
import torch.nn as nn
inp = torch.tensor([1.0, 2.0, 3, 4, 5])

outplace_dropout = nn.Dropout(p=0.4)
print(inp)
output = outplace_dropout(inp)
print(output)
print(inp) # Notice that the input doesn't get changed here


inplace_droput = nn.Dropout(p=0.4, inplace=True)
inplace_droput(inp)
print(inp) # Notice that the input is changed now
Run Code Online (Sandbox Code Playgroud)

PS:这与您所问的内容无关,但请尽量不要input用作变量名,因为input它是 Python 关键字。我知道 Pytorch 文档也这样做,这有点有趣。