PyTorch 中的自定义 dropout?

问题描述 投票:0回答:1

我正在寻找在 PyTorch 中实现自定义 dropout - 从某种意义上说,我想传递某种掩码,并让相应的神经元被“dropped out”,而不是以特定概率丢弃随机神经元。比如:

Nn.Dropout(inputs, mask = [0, 1, 0, …]

我似乎在 pytorch 的文档或论坛中找不到任何内容,因此我们将不胜感激。

python deep-learning pytorch neural-network
1个回答
0
投票

标准 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

中实现自己的逻辑
© www.soinside.com 2019 - 2024. All rights reserved.