首页 > 解决方案 > 用一个无维度重塑 keras 张量

问题描述

我有一个形状的 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

标签: pythontensorflowkeras

解决方案


推荐阅读