Skip to content

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