SpatialTf¶
Описание¶
Данный модуль выполняет операцию пространственной трансформации тензора заданным оператором. Она заключается в том, что происходит умножение координат элементов оригинального тензора на трансформирующий оператор, которое даёт координаты элемента в выходном тензоре:
где
x, y - координаты элемента в оригинальном тензоре;
\theta_{ij} - коэффициенты оператора;
\grave{x}, \grave{y} - координаты элемента в выходном тензоре.
Значение перенесённого элемента находятся с помощью билинейной интерполяции.
Для получения коэффициентов оператора используется мини-нейронная сеть, выходной слой которой имеет 6 элементов (по числу коэффициентов). Такая сеть обучается вместе с основной.
Дополнительные источники¶
Инициализация¶
def __init__(self, shape=None, name=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
shape | tuple | Размерность выходного тензора. Если None , то размерность тензора останется неизменной |
None |
name | str | Имя слоя | None |
Пояснения
-
Примеры¶
Необходимые импорты.
import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Modules import SpatialTf
Info
gpuarray
необходим для правильного размещения тензора на GPU
batchsize, maps, h, w = 1, 1, 4, 4
data = gpuarray.to_gpu(np.random.randn(batchsize, maps, inh, inw).astype(np.float32))
transform = gpuarray.to_gpu(np.tile(np.array([[1.0, 0.0, 0.001], [0, 1.0, 0.001]], dtype=np.float32), reps=(batchsize, 1, 1)))
spatialtf = SpatialTf()
spatialtf([data, transform])