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 ]]]]