在PyTorch中实现对完全连接层的辍学

时间:2019-03-14 07:59:44

标签: python pytorch dropout

如何在Pytorch中将辍学应用于以下完全连接的网络:

class NetworkRelu(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(784,128)
        self.fc2 = nn.Linear(128,64)
        self.fc3 = nn.Linear(64,10)


    def forward(self,x):
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = F.softmax(self.fc3(x),dim=1)
        return x

1 个答案:

答案 0 :(得分:1)

由于forward方法中包含功能代码,因此可以使用功能辍学,但是最好在nn.Module中使用__init__(),以便将模型设置为model.eval()评估模式会自动关闭辍学。

以下是实现辍学的代码:

class NetworkRelu(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(784,128)
        self.fc2 = nn.Linear(128,64)
        self.fc3 = nn.Linear(64,10)
        self.dropout = nn.Dropout(p=0.5)

    def forward(self,x):
        x = self.dropout(F.relu(self.fc1(x)))
        x = self.dropout(F.relu(self.fc2(x)))
        x = F.softmax(self.fc3(x),dim=1)
        return x