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