# Encoder
Conv2d(1, 32, kernel_size=4, stride=2, padding=1)
Conv2d(32, 64, kernel_size=4, stride=2, padding=1)
Conv2d(64, 128, kernel_size=4, stride=2, padding=1)
# Latent space
mu = nn.Conv2d(128, latent_dim, kernel_size=1)
logvar = nn.Conv2d(128, latent_dim, kernel_size=1)
latent_out = nn.Conv2d(latent_dim, 128, kernel_size=1)
# Decoder
nn.ConvTranspose2d(128, 64, kernel_size=4, stride=2, padding=1)
nn.ConvTranspose2d(64, 32, kernel_size=4, stride=2, padding=1)
nn.ConvTranspose2d(32, 1, kernel_size=4, stride=2, padding=1)
# Shape adjust (operation done in the decode function where I pass the input shapes from the forward)
F.interpolate(decoder_output, size=(input_h, input_w), mode='bilinear', align_corners=False)
Этот код на самом деле работает и воссоздает выходные данные той же формы, что и входные, но меня беспокоит то, что переменные скрытого пространства mu и logvar имеют формы (1, latent_dim,floor(input_h/8 ), Floor(input_w/8)) это может вызвать проблемы, когда я буду использовать модель для извлечения внедрения матрицы?
Я пытаюсь создать вариационный автоэнкодер со следующими характеристиками: [list] [*]вход: матрицы разной формы (не в квадрате)[*]вывод: каждая форма выходного экземпляра должна соответствовать форме входного экземпляра. [*]Не применять к данным какие-либо операции предварительной обработки, такие как обрезка или изменение размера. [*]Возможно, не применялась сильная постобработка Вывод VAE [/list] Мое решение представляет собой следующую модель (упрощенную) [code]# Encoder Conv2d(1, 32, kernel_size=4, stride=2, padding=1) Conv2d(32, 64, kernel_size=4, stride=2, padding=1) Conv2d(64, 128, kernel_size=4, stride=2, padding=1)
# Latent space mu = nn.Conv2d(128, latent_dim, kernel_size=1) logvar = nn.Conv2d(128, latent_dim, kernel_size=1) latent_out = nn.Conv2d(latent_dim, 128, kernel_size=1)
# Shape adjust (operation done in the decode function where I pass the input shapes from the forward) F.interpolate(decoder_output, size=(input_h, input_w), mode='bilinear', align_corners=False) [/code] Этот код на самом деле работает и воссоздает выходные данные той же формы, что и входные, но меня беспокоит то, что переменные скрытого пространства mu и logvar имеют формы (1, latent_dim,floor(input_h/8 ), Floor(input_w/8)) это может вызвать проблемы, когда я буду использовать модель для извлечения внедрения матрицы?