При использовании PyTorch ConvTranspose2d следующим образом:
w = 5 # input width
h = 5 # output height
nn.ConvTranspose2d(in_channels, out_channels, kernel_size=k, stride=s, padding=p)
Какова формула для размеров выходного сигнала в каждом канале? Я попробовал несколько примеров и не могу вывести шаблон. По какой-то причине добавление отступов сокращает размер вывода (пример начинается с 5 x 5, как указано выше):
# yields an 11 x 11 image
nn.ConvTranspose2d(in_channels, out_channels, kernel_size=3, stride=2, padding=0)
# yields a 7 x 7 image
nn.ConvTranspose2d(in_channels, out_channels, kernel_size=3, stride=2, padding=2)
При использовании большего ядра или увеличении обоих значений (ожидается), но не с ожидаемой скоростью:
# yields an 11 x 11 image
nn.ConvTranspose2d(in_channels, out_channels, kernel_size=3, stride=2, padding=0)
# yields a 13 x 13 image
nn.ConvTranspose2d(in_channels, out_channels, kernel_size=5, stride=2, padding=0)
# yields a 15 x 15 image
nn.ConvTranspose2d(in_channels, out_channels, kernel_size=3, stride=3, padding=0)
Я уверен, что есть довольно простое математическое уравнение, включающее w, h, k, s, p
, но я не могу найти его в документации и не смог получить его сам. Обычно я не стал бы просить математическое уравнение, но оно полностью влияет на способность CNN компилировать и генерировать правильный размер. Заранее спасибо!