1

中有一个参数anttention_sizetf.contrib.seq2seq.AttentionWrapper文档说“基本的注意力包装器是 tf.contrib.seq2seq.AttentionWrapper。这个包装器接受一个 RNNCell 实例、一个 AttentionMechanism 实例和一个注意力深度参数(attention_size);”,但是什么是注意力深度?在 Bahdanau 和 Luong 的论文中,我发现完全没有注意力深度,注意力机制的源代码我也不是很清楚。谁能告诉我'attention_size'的意思和原理,谢谢!

4

1 回答 1

3

据我了解,原始论文的作者避免将基础理论与实现细节混为一谈。因此,他们将注意力/上下文大小定义为等于编码器隐藏大小(在此处输入图像描述对于双向 LSTM),如下所示:

在此处输入图像描述

在此处输入图像描述

但是,如果编码器隐藏大小太大,则在长序列上计算注意力可能会消耗大量时间和内存。

因此,tensorflow 实现引入了额外的密集注意力层,带有可调的注意力大小选项(更高版本中的注意力层大小),如下所示

  if attention_layer is not None:
    attention = attention_layer(array_ops.concat([cell_output, context], 1))
  else:
    attention = context

TL;博士; 当编码器隐藏大小太大时,您可以使用attention_size选项来减少注意力机制的内存消耗。

于 2018-03-12T12:16:24.697 回答