SubtractMean

Описание

Info

Родительский класс: Module

Производные классы: -

Данный модуль выполняет операцию вычитания среднего по фильтру из элементов тензора. Модуль работает только с двумерными картами.

Инициализация

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)
>>> submean(data)
[[[[-2.  -1.5 -1. ]
   [-0.5  0.   0.5]
   [ 1.   1.5  2. ]]]]

И с учётом:

>>> submean = SubtractNorm(size=3, includePad=True)
>>> submean(data)
[[[[-0.8888889  -0.6666666   0.6666666 ]
   [ 0.66666675  0.          2.        ]
   [ 3.7777777   3.3333333   5.333333  ]]]]