Reshape¶
Описание¶
Данный модуль реализует операцию приведения тензора к новой заданной размерности.
Инициализация¶
def __init__(self, shape, showWarnings=True, name=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
shape | tuple | Кортеж новой размерности тензора | - |
showWarnings | bool | Показывать ли предупреждения | True |
name | str | Имя слоя | None |
Пояснения
shape
- может принимать специальные индикаторы 0
и -1
(см. примеры).
Примеры¶
Необходимые импорты.
import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Modules import Reshape
Info
gpuarray
необходим для правильного размещения тензора на GPU
inshape = (10, 10, 10, 10)
data = gpuarray.to_gpu(np.random.randn(*inshape).astype(np.float32))
reshape = Reshape((10, 10, 100))
reshape(data)
print(reshape.data.shape)
(10, 10, 100)
Модулю можно передать значение -1
в кортеже размерности для той оси, размерность которой будет высчитываться по остаточному принципу:
reshape = Reshape((10, -1, 50))
reshape(data)
print(reshape.data.shape)
(10, 20, 50)
Также можно передать значение 0
, чтобы оставить размерность соответствующей оси неизменной:
inshape = (1, 4, 7, 7)
data = gpuarray.to_gpu(np.random.randn(*inshape).astype(np.float32))\
reshape = Reshape((0, 2, -1, 0))
reshape(data)
print(reshape.data.shape)
(1, 2, 14, 7)