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

How to stack (None,1024) tensor into (None,7,7,1024) tensor in keras?

我有一个形状为 (None,1024) 的张量 A,我想将其重复 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)

的张量

首先使用RepeatVector layer to repeat it for 49 times, then use 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)