这个问题与此处显示的神经机器翻译有关:神经机器翻译
self.W1
并在函数的self.W2
第 4 行和第 5 行中初始化为每个 10 个单元的密集神经层__init__
class BahdanauAttention
在随附的代码图像中,我不确定我是否理解在第 17 行和第 18 行中设置的前馈神经网络。所以,我将这个公式分解成几个部分。见第 23 行和第 24 行。
query_with_time_axis
是 的输入张量self.W1
,values
是 的输入self.W2
。并且每个计算函数Z = WX + b
,并将 Z 加在一起。加在一起的张量的维度是(64, 1, 10)
和(64, 16, 10)
。我假设两者都是随机的权重初始化,self.W1
并由幕后self.W2
处理。Keras
问题:
将 Z 加在一起之后,tanh
应用非线性 (self.V
score
对于最后一步,我们不对 的结果应用激活函数(tanh 等)self.V(tf.nn.tanh(self.W1(query_with_time_axis) + self.W2(values)))
,以从最后一个神经网络层获得单个输出。
最后一步没有使用激活函数有什么原因吗?