Конкатенация тензора переменной размерности с тензором фиксированной размерности - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь объединить контекстный вектор формы (Batch_size=None, context_dim) с выводом скрытого состояния LSTM (return_sequence=True) формы (Batch_size=None, Time_steps=None, feature_dim)

Ожидаемый результат - (Batch_size, Time_step, feature_dim+context_dim)

Однако, поскольку Time_step dim не исправлен, я не могу найти решение, используя слои keras

Я попытался решить эту проблему следующим образом с помощью TimeDistributed layer , которыйследует объединить скрытое состояние с тензором контекста.

python
inp_seq = Input(shape=(None, FEATURE_DIM,), name="inpt_reference")
inp_context = Input(shape=(FEATURE_DIM,), name="last_inpt_reference")

hidden_state_0 = LSTM(5, return_sequences=True, name="LSTM")(inp_seq)
context_0 = Dense(4, activation='sigmoid', name="dense")(inp_context)

expand_0 = TimeDistributed( Lambda(lambda x: concatenate([x, context_0])), name= "spacial_concat" )
context_0_hidden_state = expand_0(hidden_state_0)

model_representation = Model(inputs = [inp_seq, inp_context],
                  outputs= context_0_hidden_state)

print(model_representation.summary())

Я получаю ожидаемую выходную форму (None,None,9)

, однако, когда я печатаю сводку модели, я как-то не вижу слои относительно вектора контекста

У кого-нибудь есть идея, что происходит?и если это не правильный способ сделать это, любой указатель на правильный способ сделать это?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...