Внимание Богданауса в нейронном машинном переводе с вниманием - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь понять внимание Бахданауса, используя следующий учебник: https://www.tensorflow.org/tutorials/text/nmt_with_attention

Расчет следующий:

self.attention_units = attention_units
self.W1 = Dense(self.attention_units)
self.W2 = Dense(self.attention_units)
self.V = Dense(1)

score = self.V(tf.nn.tanh(self.W1(last_inp_dec) + self.W2(input_enc)))

У меня две проблемы:

  1. Я не могу понять, почему форма tf.nn.tanh(self.W1(last_inp_dec) + self.W2(input_enc)) имеет вид (batch_size, max_len, Внимание_units)?

Используя правила умножения матриц, я получил следующие результаты:

a) Форма себя.W1 (last_inp_de c) -> (1, hidden_units_de c) * (hidden_units_de c, Внимание_units) = (1, внимание_units)

b ) Форма себя.W2 (last_inp_en c) -> (max_len, hidden_units_de c) * (hidden_units_de c, Внимание_units) = (max_len, Внимание_units)

Затем мы складываем a) и б) quntaties. Как мы получаем размерность (max_len, Внимание_units) или (batch_size, max_len, Внимание_units)? Как мы можем сделать сложение с другим размером второго измерения (1 против max_len)?

Почему мы умножаем tf.nn.tanh(self.W1(last_inp_dec) + self.W2(input_enc)) на self.V? Потому что мы хотим, чтобы альфа была скалярной?
...