У меня есть тензор формы 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