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 的逻辑回归。
fc1
和 fc2
之间的 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
必须对缺少某些输入特征具有鲁棒性。
我想用 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
之间的 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
必须对缺少某些输入特征具有鲁棒性。