Seq2Seq Внимание механизм - PullRequest
       48

Seq2Seq Внимание механизм

0 голосов
/ 06 декабря 2018

У меня проблемы с реализацией механизма внимания Богданау в пользовательской архитектуре seq2seq (кодер-декодер).До сих пор я достиг этой точки:

# all variables are of shape (unrollings, batch_size, hidden_size)
merged_states = []
for i in range(len(encoder_hidden_states)):
    merged_states.append(tf.concat([encoder_hidden_states[i], prev_decoder_hidden_state], axis=1))

eij = tf.layers.dense(tf.convert_to_tensor(merged_states), encoder_hidden_states[0].shape[1], activation='tanh')
softmax = tf.nn.softmax(eij, dim=0)
context = tf.reduce_sum(tf.multiply(softmax, encoder_hidden_states), axis=0)

В статье упоминается, что функция счета представляет собой однослойную сеть, но я видел, как другие использовали: эту формулу .Из моего понимания кода выше следует реализовать последнюю часть уравнения без умножения на v. У меня есть несколько вопросов здесь:

  • Какого размера должен быть вектор v и почему он требуется?
  • После того, как я вычислил новый контекст, покажите, должен ли он передаваться в декодер?Из того, что я видел, люди объединяют текущий ввод (предыдущий вывод декодера с контекстом), и это будет новый ввод декодера.

Заранее спасибо.

...