我正在寻找在 PyTorch 中实现自定义 dropout - 从某种意义上说,我想传递某种掩码,并让相应的神经元被“dropped out”,而不是以特定概率丢弃随机神经元。比如:
Nn.Dropout(inputs, mask = [0, 1, 0, …]
我似乎在 pytorch 的文档或论坛中找不到任何内容,因此我们将不胜感激。
标准 dropout 在每次前向传递时都会对随机掩码进行采样。这是一个基本示例:
class Dropout(nn.Module):
def __init__(self, p):
super().__init__()
self.p = p
def get_mask(self, x):
mask = torch.rand(*x.shape)<=self.p
return mask
def forward(self, x):
if self.training:
mask = self.get_mask(x)
x = x * mask
return x
如果您想要自定义 dropout,您可以在
get_mask
中实现自己的逻辑