Как сложить (None, 1024) тензор в (None, 7,7,1024) тензор в кератах? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть тензор 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 голосов
/ 16 ноября 2018

Сначала используйте слой 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)
...