DepthConcat¶
Описание¶
Данный модуль работает с тензорами размерности (N, C, H, W), где N - размер батча, C - количество карт (каналов), H - высота карты, W - ширина карты. Отличие от Concat в том, что модуль склеивает тензоры только вдоль оси каналов, но делает это даже для тех тензоров, у которых отличается размер карт (см. пример).
Инициализация¶
def __init__(self, name=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
name | str | Имя слоя. | None |
Пояснения
-
Примеры¶
Необходимые импорты.
>>> import numpy as np
>>> from PuzzleLib.Backend import gpuarray
>>> from PuzzleLib.Modules import DepthConcat
Info
gpuarray
необходим для правильного размещения тензора на GPU
Для удобства ограничимся размером батча и количеством карт 1.
>>> data1 = gpuarray.to_gpu(np.random.randint(0, 9, (1, 1, 2, 2)).astype(np.float32))
>>> data2 = gpuarray.to_gpu(np.random.randint(0, 9, (1, 1, 6, 6)).astype(np.float32))
>>> data3 = gpuarray.to_gpu(np.random.randint(0, 9, (1, 1, 4, 3)).astype(np.float32))
>>> print(data1)
[[[[5. 7.]
[6. 7.]]]]
>>> print(data2)
[[[[2. 7. 3. 1. 0. 4.]
[3. 6. 4. 6. 7. 6.]
[6. 7. 8. 7. 8. 4.]
[2. 4. 7. 3. 1. 3.]
[4. 8. 2. 5. 0. 3.]
[4. 0. 2. 8. 1. 3.]]]]
>>> print(data3)
[[[[7. 7. 7.]
[4. 1. 7.]
[6. 5. 2.]
[3. 7. 6.]]]]
>>> concat = DepthConcat()
>>> cocnat([data1, data2, data3])
[[[[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 5. 7. 0. 0.]
[0. 0. 6. 7. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]]
[[2. 7. 3. 1. 0. 4.]
[3. 6. 4. 6. 7. 6.]
[6. 7. 8. 7. 8. 4.]
[2. 4. 7. 3. 1. 3.]
[4. 8. 2. 5. 0. 3.]
[4. 0. 2. 8. 1. 3.]]
[[0. 0. 0. 0. 0. 0.]
[0. 7. 7. 7. 0. 0.]
[0. 4. 1. 7. 0. 0.]
[0. 6. 5. 2. 0. 0.]
[0. 3. 7. 6. 0. 0.]
[0. 0. 0. 0. 0. 0.]]]]
>>> print(concat.data.shape)
(1, 3, 6, 6)