Как я могу удалить слой в Pytorch? - PullRequest
0 голосов
/ 09 января 2019

Я хочу удалить часть декодера автоэнкодера.

и я хочу поместить FC в удаленную часть.

Кроме того, части датчика не будут тренироваться с заранее изученными весами.

    self.encoder = nn.Sequential(
        nn.Conv2d(1, 16, 3, padding=1),
        nn.ReLU(True),
        nn.MaxPool2d(kernel_size=2, stride=2),
        nn.Conv2d(16, 8, 3, padding=1),
        nn.ReLU(True),
        nn.MaxPool2d(kernel_size=2, stride=2),
        nn.Conv2d(8, 8, 3, padding=1),
        nn.ReLU(True),
        nn.MaxPool2d(kernel_size=4, stride=1),

    )
    self.decoder = nn.Sequential(
        nn.Conv2d(8, 8, 3, padding=1),
        nn.ReLU(True),
        nn.ConvTranspose2d(8, 8, kernel_size=2, stride=2),
        nn.Conv2d(8, 8, 3, padding=1),
        nn.ReLU(True),
        nn.ConvTranspose2d(8, 8, kernel_size=2, stride=2),
        nn.Conv2d(8, 16, 3),
        nn.ReLU(True),
        nn.ConvTranspose2d(16, 16, kernel_size=2, stride=2),
        nn.Conv2d(16, 1, 3, padding=1)
    )
    def forward(self, x):
       if self.training :
           x = self.encoder(x)
           x = self.decoder(x)
           return x
       else:
           x = classifier(x)
           return x

это возможно? помоги мне ...

1 Ответ

0 голосов
/ 16 января 2019

Одним простым и понятным решением было бы определить автономную сеть в качестве вашего декодера, а затем заменить атрибут декодера вашей модели этой новой сетью после завершения предварительного обучения. Простой пример ниже:

class sillyExample(torch.nn.Module):
   def __init__(self):
       super(sillyExample, self).__init__()
       self.encoder = torch.nn.Linear(5, 5)
       self.decoder = torch.nn.Linear(5, 10)

   def forward(self, x):
       return self.decoder(self.encoder(x))

test = sillyExample()
test(torch.rand(30, 5)).shape
Out: torch.Size([30, 10]) 
test.decoder = torch.nn.Linear(5, 20)  # replace the decoder
test(torch.rand(30, 5)).shape
Out: torch.Size([30, 20]) 

Просто убедитесь, что ваши оптимизаторы повторно инициализированы обновленной моделью (или чем-то еще, что может ссылаться на параметры модели).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...