Как мы можем обеспечить вывод линейного слоя на Conv2D в PyTorch? - PullRequest
1 голос
/ 13 апреля 2020

Я строю Автоэнкодер, где мне нужно кодировать изображение в скрытое представление длины 100. Я использую следующую архитектуру для моей модели.

        self.conv1 = nn.Conv2d(in_channels = 3, out_channels = 32, kernel_size=3)
        self.conv2 = nn.Conv2d(in_channels=32,out_channels=64,kernel_size=3,stride=2)
        self.conv3 = nn.Conv2d(in_channels=64,out_channels=128,kernel_size=3,stride=2)

        self.linear = nn.Linear(in_features=128*30*30,out_features=100)

        self.conv1_transpose = nn.ConvTranspose2d(in_channels=128,out_channels=64,kernel_size=3,stride=2,output_padding=1)
        self.conv2_transpose = nn.ConvTranspose2d(in_channels=64,out_channels=32,kernel_size=3,stride=2,output_padding=1)
        self.conv3_transpose = nn.ConvTranspose2d(in_channels=32,out_channels=3,kernel_size=3,stride=1)  

Есть ли способ, которым я мог бы дать Вывод слоя Linear в слой Conv2D или ConvTranspose2D, чтобы я мог восстановить свое изображение? Вывод восстанавливается, если я удаляю слой Linear. Я хочу знать, как я могу восстановить свое изображение, сохраняя слой Linear

. Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

7 голосов
/ 14 апреля 2020

Вы могли бы использовать другой линейный слой:

self.linear2 = nn.Linear(in_features=100, out_features=128*30*30)

А затем преобразовать вывод в трехмерный том и передать его в ваши сверточные слои.

...