【发布时间】:2020-08-05 15:34:10
【问题描述】:
我正在尝试使用以下教程了解 Bahdanaus 注意力: 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)))
我有两个问题:
-
我不明白为什么
tf.nn.tanh(self.W1(last_inp_dec) + self.W2(input_enc))的形状是 (batch_size,max_len,attention_units) ?使用矩阵乘法的规则我得到了以下结果:
a) self.W1(last_inp_dec) -> (1,hidden_units_dec) * (hidden_units_dec,attention_units) = (1,attention_units) 的形状
b) self.W2(last_inp_enc) 的形状 -> (max_len,hidden_units_dec) * (hidden_units_dec,attention_units) = (max_len,attention_units)
然后我们将 a) 和 b) 数量相加。我们如何最终得到维度(max_len, attention_units)或(batch_size, max_len, attention_units)?我们如何对不同大小的第二维(1 vs max_len)进行加法?
-
为什么要将
tf.nn.tanh(self.W1(last_inp_dec) + self.W2(input_enc))乘以self.V?因为我们希望 alpha 为标量?
【问题讨论】:
标签: tensorflow deep-learning attention-model