Skip to content

Concat

Описание

Info

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

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

Этот модуль выполняет функцию конкатенации входных тензоров вдоль заданной оси. Аналог функции concatenate в numpy.

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

def __init__(self, axis, name=None):

Параметры

Параметр Возможные типы Описание По умолчанию
axis int Ось, вдоль которой происходит склейка массивов -
name str Имя слоя None

Пояснения

-

Примеры

Необходимые импорты.

import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Modules import Concat

Info

gpuarray необходим для правильного размещения тензора на GPU

Сгенерируем синтетические четырёхмерные тензоры:

np.random.seed(123)
data = []
for i in range(3):
...   data.append(gpuarray.to_gpu(np.random.randn(np.random.randint(low=5, high=10), 10, 5, 3).astype(np.float32)))
...   print(data[i].shape)
(7, 10, 5, 3)
(6, 10, 5, 3)
(9, 10, 5, 3)

Инициализируем операцию со склейкой вдоль оси батча (axis=0):

concat = Concat(axis=0)
outdata = concat(data)
print(outdata.shape)
(22, 10, 5, 3)

Переинициализируем данные для склейки по оси карт:

data = []
for i in range(3):
...   data.append(gpuarray.to_gpu(np.random.randn(10, np.random.randint(low=4, high=8), 4, 5).astype(np.float32)))
...   print(data[i].shape)
(10, 6, 4, 5)
(10, 6, 4, 5)
(10, 4, 4, 5)
concat = Concat(axis=1)
outdata = concat(data)
print(outdata.shape)
(10, 16, 4, 5)