SubtractMean¶
Описание¶
Данный модуль выполняет операцию вычитания среднего по фильтру из элементов тензора. Модуль работает только с двумерными картами.
Инициализация¶
def __init__(self, size=5, includePad=True, name=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
size | int | Размер фильтра | 5 |
includePad | bool | Флаг учета значений заполнения краёв при подсчете среднего значения | True |
name | str | Имя слоя | None |
Пояснения
size
- величина размера фильтра должна быть нечётной; фильтр всегда квадратный;
includePad
- т.к. атрибут pad
задаётся ненулевым по умолчанию и к исходному тензору по краям добавляются новые элементы, то возможно учитывать во время работы модуля при поднятом флаге includePad
.
Примеры¶
Необходимые импорты.
import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Modules import SubtractMean
Info
gpuarray
необходим для правильного размещения тензора на GPU
batchsize, maps, h, w = 1, 1, 3, 3
data = gpuarray.to_gpu(np.arange(batchsize * maps * h * w).reshape((batchsize, maps, h, w)).astype(np.float32))
print(data)
[[[[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]]]
Инициализируем модуль без учёта паддинга при расчётах:
submean = SubtractMean(size=3, includePad=False)
print(submean(data))
[[[[-2. -1.5 -1. ]
[-0.5 0. 0.5]
[ 1. 1.5 2. ]]]]
И с учётом:
submean = SubtractNorm(size=3, includePad=True)
print(submean(data))
[[[[-0.8888889 -0.6666666 0.6666666 ]
[ 0.66666675 0. 2. ]
[ 3.7777777 3.3333333 5.333333 ]]]]