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

标签 python neural-network pytorch dropout regularized

我想实现带有 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 之间的丢失将丢失一些(p=0.2)input_dim 功能由 fc1 生成,要求 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 必须能够在缺少某些输入功能的情况下保持鲁棒性。

关于python - PyTorch 中带有 dropout 正则化的逻辑回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69192850/

相关文章:

python - 如何删除json文件python中的元素

machine-learning - 动量 0.9 和 0.99 新元

python-2.7 - 如何手动初始化权重值?

math - 反向传播算法方程的推导

python - 在 PyTorch 中本地测量多类分类的 F1 分数

coding-style - PyTorch 中是否存在干净且可扩展的 LSTM 实现?

python - 任何 CUDA 版本都不完整的 PyTorch(模块 'torch' 没有属性 'cuda' )

Python 在特定条件下停止嗅探

python - Hadoop Streaming 命令失败并出现 Python 错误

python - 为什么我可以重新分配 dict.update 但不能重新分配 dict.__setitem__