我想实现带有 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 的逻辑回归。
fc1
和 fc2
之间的丢失将丢失一些(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/