You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyTorch中实现带输入层Dropout正则化的Logistic Regression

解答

你的认知是正确的,你提供的示例代码不属于标准逻辑回归。标准逻辑回归的结构是单个线性映射层接sigmoid激活函数,示例中额外加入了维度和输入相同的fc1隐藏层,本质是一个2层的浅层神经网络。

输入层加dropout的标准逻辑回归实现

要在输入层应用dropout,只需要在将输入传入线性层之前,先对输入特征做dropout处理即可,参考实现代码如下:

import torch
import torch.nn as nn

class LogisticRegressionWithInputDropout(nn.Module):
    def __init__(self, input_dim=69, dropout_p=0.2):
        super().__init__()
        # 输入层dropout
        self.input_dropout = nn.Dropout(p=dropout_p)
        # 标准逻辑回归的线性层:输入维度直接映射到输出1维
        self.linear = nn.Linear(input_dim, 1)
    
    def forward(self, x):
        # 先对输入做dropout,再进入线性层
        x = self.input_dropout(x)
        # 线性层+Sigmoid激活,符合逻辑回归的标准形式
        return torch.sigmoid(self.linear(x))

注意事项

  • 训练时请确保模型处于训练模式(model.train()),dropout才会生效;推理/评估阶段需要调用model.eval()关闭dropout,避免预测结果出现随机偏差
  • 输入层的dropout概率不要设置过高,建议控制在0.1~0.3区间,防止丢失过多有效输入特征影响模型效果

内容的提问来源于stack exchange,提问作者Marco Repetto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:27:03