如何在keras中将(None,1024)张量堆叠为(None,7,7,1024)张量?

时间:2018-11-16 12:24:31

标签: python tensorflow keras tensor

我有一个形状为A的张量(None,1024),我想重复49次以制成形状为(None,7,7,1024)的矩阵张量。每个(,1024)向量都是张量A的副本。

我该怎么做?

我尝试过

A = K.stack([A,A,A,A,A,A,A])
A = K.stack([A,A,A,A,A,A,A])

但这给了我一个(7, 7, None, 1024)形状的张量

1 个答案:

答案 0 :(得分:2)

首先使用RepeatVector层将其重复49次,然后根据需要使用Reshape层对其进行整形:

r_A = RepeatVector(49)(A)
rsh_A = Reshape((7, 7, -1))(r_A)

或者,您可以基于后端函数定义一个函数并将其包装在Lambda层中:

from keras import backend as K

def rsh(x):
    y = K.repeat(x, 49)
    return K.reshape(y, (-1, 7, 7, K.int_shape(y)[-1]))

rsh_A = Lambda(rsh)(A)