Обратная функция от numpy as_strided - PullRequest
2 голосов
/ 18 июня 2020

У меня 4-тензор x. 6-тензор y вычисляется следующим образом:

x = np.random.randn(64, 28, 28, 1)
strided_shape = 64, 26, 26, 3, 3, 1
y = numpy.lib.stride_tricks.as_strided(x, strided_shape, strides=(x.strides[0], x.strides[1], x.strides[2], x.strides[1], x.strides[2], x.strides[3]))

strided_shape в общем может иметь любую форму, если первое и последнее измерения соответствуют размерам x (это просто конкретный пример).

Мой вопрос: используя yx.shape и x.strides кортежи), можно ли восстановить исходный тензор x, снова используя as_strided, reshape, sum, et c.? Примечание: на самом деле я не планирую применять указанный процесс к самому y; скорее, я хочу выполнить процедуру с тензором той же формы, что и y.

1 Ответ

2 голосов
/ 18 июня 2020

Ну, y - это просто вид на x, имеющий разные формы и шаги. Таким образом, восстановление x из y - это просто изменение формы и шагов. Итак, учитывая их (при условии, что они сохранены до преобразования x в y), это будет просто -

x = np.lib.stride_tricks.as_strided(y, x.shape, x.strides)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...