KMaxPool¶
Описание¶
K-Max Pooling - это операция пулинга, представляющая собой обобщение макс-пулинга по параметру времени, используемого в модели Max-TDNN и отличающегося от локального макс-пулинга, применяемого в сверточных сетях для распознавания объектов (LeCun et al., 1998).
K-Max Pooling выбирает подпоследовательность из k наибольших значений последовательности. В данном модуле реализован частный случай, когда относительные позиции выбранных элементов не сохраняются - на выход поступают отсортированные значения.
Инициализация¶
def __init__(self, topk, axis, name=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
topk | int | Количество максимальных значений | - |
axis | int | Ось, вдоль которой вычисляется операция | - |
name | str | Имя слоя | None |
Пояснения
-
Примеры¶
Необходимые импорты.
import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Modules import KMaxPool
Info
gpuarray
необходим для правильного размещения тензора на GPU
np.random.seed(123)
data = gpuarray.to_gpu(np.random.randint(0, 9, (1, 1, 10)).astype(np.float32))
print(data)
[[[2. 2. 6. 1. 3. 6. 1. 0. 1. 0.]]]
topk, axis = 2, 2
kmaxpool = KMaxPool(topk=3, axis=2)
print(kmaxpool(data))
[[[3. 6. 6.]]]