首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在注意力机制中,“源隐藏状态”指的是什么?

在注意力机制中,“源隐藏状态”指的是什么?
EN

Stack Overflow用户
提问于 2018-01-23 04:01:46
回答 1查看 857关注 0票数 3

注意力权重计算如下:

我想知道h_s指的是什么。

在tensorflow代码中,编码器RNN返回一个元组:

代码语言:javascript
复制
encoder_outputs, encoder_state = tf.nn.dynamic_rnn(...)

正如我认为的那样,h_s应该是encoder_state,但是github/nmt给出了不同的答案?

代码语言:javascript
复制
# attention_states: [batch_size, max_time, num_units]
attention_states = tf.transpose(encoder_outputs, [1, 0, 2])

# Create an attention mechanism
attention_mechanism = tf.contrib.seq2seq.LuongAttention(
    num_units, attention_states,
    memory_sequence_length=source_sequence_length)

我是不是误解了密码?或者h_s实际上是指encoder_outputs

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 08:17:24

公式可能来自这个职位,所以我将使用同一篇文章中的NN图片:

这里,h-bar(s)是编码器的所有蓝色隐藏状态(最后一层),而h(t)是解码器当前的红色隐藏状态(也是最后一层)。其中一张图片是t=0,您可以看到哪些块被用虚线箭头连接到注意权重。score函数通常是其中之一:

Tensorflow注意机制与这张图片相匹配。理论上,单元输出在大多数情况下是它的隐藏状态(一个例外是LSTM单元,其中输出是状态的短期部分,即使在这种情况下,输出更适合于注意机制)。实际上,当输入填充为零时,tensorflow的encoder_stateencoder_outputs不同:状态从前一个单元格状态传播,而输出为零。显然,您不想关注尾随零,因此为这些单元格设置h-bar(s)是有意义的。

因此,encoder_outputs正是从蓝色块向上射出的箭头。在后面的代码中,attention_mechanism被连接到每个decoder_cell,以便它的输出通过上下文向量传递到图片上的黄色块。

代码语言:javascript
复制
decoder_cell = tf.contrib.seq2seq.AttentionWrapper(
    decoder_cell, attention_mechanism,
    attention_layer_size=num_units)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48394009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档