Как использовать MaxUnpool1d из библиотеки Pytorch в сверточный авто-кодер? - PullRequest
0 голосов
/ 31 октября 2018

Я хочу создать Coneolution AutoEncoder с использованием библиотеки Pytorch в python. Все примеры не имеют MaxUnpool1d.

Архитектура, которую я хочу построить, должна быть такой:

class autoencoder(nn.Module):
    def __init__(self):
            self.encoder = nn.Sequential(
                                 nn.Conv1d(in_channels=1, out_channels=64 ,kernel_size=16 , stride=3),
                                 nn.ReLU(True),
                                 nn.MaxPool1d(4),
                                 nn.Conv1d(64, 128 ,8, 3),
                                 nn.ReLU(True),
                                 nn.MaxPool1d(4), 
                                 )

            self.decoder = nn.Sequential(
                                 nn.MaxUnpool1d(4),
                                 nn.ConvTranspose1d(in_channels =128, out_channels =64 , kernel_size =8, stride= 3),
                                 nn.ReLU(True),
                                 nn.MaxUnpool1d(4),
                                 nn.ConvTranspose1d(64, 1 ,16, 3),
                                 nn.Tanh()
                                 )

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

Чтобы это работало, я должен предоставить индексы для слоя MaxUnpool1d. Как я могу использовать его для текущей архитектуры, а также сделать размер ввода равным выходу?

Спасибо.

...