Реализация выпадения на полностью связанный слой в PyTorch - PullRequest
0 голосов
/ 14 марта 2019

Как применить выпадение к следующей полностью подключенной сети в 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 Ответ

1 голос
/ 14 марта 2019

Поскольку в методе 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
...