Изменение тензора керас с помощью одного измерения - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть тензор формы keras (None, 61, 80), и я хочу изменить его на (61, None * 80). Размер None составляет batch_size. Я не могу использовать Keras.backend.reshape.

Я пытался -

shape = K.int_shape(x)
G = K.reshape(x, [shape[1], shape[0]*shape[2]])

РЕДАКТИРОВАТЬ 1

Операция, которую я пытаюсь выполнить HoSVD (SVD высшего порядка) для партии тензоров в пользовательском слое. Для этого я должен раскрыть свой тензор в виде матрицы.

Например, если у меня есть партия тензоров формы (20,61,80), где 20 - размер партии, развертывание в режиме 0 даст мне матрицу формы (20, 61 * 80) при развертывании в режиме 1 (61, 20 * 80) и при развертывании в режиме 3 (80, 20 * 61).

Функция, которую я написал, -

def my_unfold(x_tensor,mode=0):
#shape = K.shape(tensor)

num_dims = len(x_tensor.shape)
temp = list(range(0,num_dims))
temp.remove(mode)


change_dims = K.permute_dimensions(x_tensor, [mode ,temp[0],temp[1]])

shape=K.int_shape(change_dims)
new_shape =  K.concatenate(shape[0],shape[1]*shape[2])
G = K.reshape(change_dims, new_shape)
return G
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...