Да.
Вы можете просто применить MaxPool1d()
к любому размеру, и они будут (вероятно) автоматически дополнены. Обратите внимание, что, к сожалению, вам нужно переключиться между измерениями, так как по умолчанию будет выполняться поиск пула вдоль третьего измерения.
Вот краткий рабочий пример:
import torch
import torch.nn as nn
op = nn.MaxPool1d(5) # kernel size of 5
x1 = torch.zeros([1,16,1])
x2 = torch.zeros([1,16,3])
op(x1) # works
op(x2) # works as well
Чтобы получить тензор в правильном измерении, вы можете использовать .view()
в комбинации с .unsqueeze
. Предполагая, что у вас есть заданная x1
с размерностью (2,16)
, просто выполните
x1.view(16,2).unsqueeze(dim=0)
и затем выполнить обратное преобразование
result_x1 = op(x1).view(1,16) # only one value left due to pooling