Неужели там нет дополнения = такая же опция для Conv2d из PyTorch? - PullRequest
1 голос
/ 09 октября 2019

В настоящее время я работаю над созданием сверточной нейронной сети (CNN), которая будет работать с данными временных рядов.

Более конкретно, данные представляют собой финансовые данные формы (100, 40), имеющие значение 100100 отметок времени и 40 означает 40 функций.

Используемая мной CNN использует асимметричные размеры ядра (т. Е. 1 x 2 и 4 x 1), а также асимметричные шаги (т. Е. 1 x 2 для 1 x 2 слоев и 1 x 1 для 4 x 1 слоев).

Чтобы размер по высоте оставался 100, мне нужно было применить некоторые отступы к данным. Я искал способы сделать это и заметил, что люди, которые используют TensorFlow или Keras, просто делают padding='same', но эта опция явно недоступна в PyTorch согласно многим ресурсам, которые я нашел, включая этот поток в Github .

Я обнаружил, что согласно некоторым ответам в этом вопросе , а также этому ответу на форуме PyTorch , я могу вручную рассчитать, сколько мне нужнодля заполнения моих данных и может использовать torch.nn.ZeroPad2d для решения моей проблемы, так как кажется, что нормальные torch.nn.Conv2d слои не поддерживают асимметричное заполнение (я считаю, что общее заполнение Iнужно 3 по высоте и 0 по ширине).

Экспериментальный код, который я написал, чтобы проверить это, выглядит так:

import torch
import torch.nn as nn

conv = nn.Conv2d(1, 1, kernel_size=(4, 1))
pad = nn.ZeroPad2d((0, 0, 2, 1)) # Add 2 to top and 1 to bottom.

x = torch.randint(low=0, high=9, size=(100, 40))
x = x.unsqueeze(0).unsqueeze(0)

y = pad(x)

x.shape # (1, 1, 100, 40)
y.shape # (1, 1, 103, 40)

print(conv(x.float()).shape)
print(conv(y.float()).shape)

# Output
# x -> (1, 1, 97, 40)
# y -> (1, 1, 100, 40)

Как видите, он работаетв том смысле, что размер размеров остается прежним. Однако мне было интересно, неужели там нет опции padding='same'? Кроме того, как мы узнаем, применять ли отступ 2 сверху или снизу?

Спасибо.

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