PyTorch 中带 dropout 正则化的逻辑回归

Logistic regression with dropout regularization in PyTorch

我想用 dropout 正则化实现逻辑回归,但到目前为止唯一有效的例子如下:

class logit(nn.Module):
    def __init__(self, input_dim = 69, output_dim = 1):
        super(logit, self).__init__()
    
        # Input Layer (69) -> 1
        self.fc1 = nn.Linear(input_dim, input_dim)
        self.fc2 = nn.Linear(input_dim, 1)
 
        self.dp = nn.Dropout(p = 0.2)
      
      
    # Feed Forward Function
    def forward(self, x):
        x = self.fc1(x)
        x = self.dp(x)
        x = torch.sigmoid(self.fc2(x))
        
        return x

现在在层与层之间设置dropout的问题是最后我没有逻辑回归了(如果我错了请纠正我)。

我想做的是在输入级别退出。

实际上,你仍然有一个带有 dropout 的逻辑回归。

fc1fc2 之间的 dropout 将丢弃 fc1 产生的 input_dim 特征的一些(p=0.2),需要 fc2 对他们的缺席保持稳健。这个事实不会改变模型输出的 logit。此外,请记住,在测试时,(通常)dropout 将被禁用。

请注意,您还可以在输入级别应用 dropout:

    def forward(self, x):
        x = self.dp(x)
        x = self.fc1(x)
        x = self.dp(x)
        x = torch.sigmoid(self.fc2(x))

在这种情况下,fc1 必须对缺少某些输入特征具有鲁棒性。