首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认情况下,TensorFlow embedding_attention_seq2seq方法实现双向RNN编码器吗?

默认情况下,TensorFlow embedding_attention_seq2seq方法实现双向RNN编码器吗?
EN

Stack Overflow用户
提问于 2016-10-14 13:53:52
回答 1查看 1.9K关注 0票数 3

我已经将embedding_attention_seq2seq模块用于机器翻译任务,如以下教程所述:

https://www.tensorflow.org/versions/master/tutorials/seq2seq/index.html

在本教程中指定模型的seq2seq_model.py中,我注意到在默认情况下,如果在以下行中将use_lstm设置为false,则它们使用了use_lstm

代码语言:javascript
复制
# Create the internal multi-layer cell for our RNN.
single_cell = tf.nn.rnn_cell.GRUCell(size)
if use_lstm:
  single_cell = tf.nn.rnn_cell.BasicLSTMCell(size)
cell = single_cell
if num_layers > 1:
  cell = tf.nn.rnn_cell.MultiRNNCell([single_cell] * num_layers)

现在,如果编码器是双向的,并且上下文化同时考虑了隐藏层参数,那么本文中描述的这里在实现模型时所描述的注意机制具有更大的语义意义。seq2seq_model文件没有提到双向组件。

所以我的问题是,embedding_attention_seq2seq默认实现双向RNN编码器吗?

如果没有,它是否只是采用普通LSTM编码器的每一时间步骤的隐藏层输出,从而将上下文限制在其前面的句子中的单词上?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-26 22:13:56

所以我的问题是,embedding_attention_seq2seq默认实现双向RNN编码器吗?

不,它不实现双向RNN编码器。编码器的输出(用于构建注意状态)是在embedding_attention_seq2seq的前几行中构造的。

代码语言:javascript
复制
# Encoder.
encoder_cell = rnn_cell.EmbeddingWrapper(
    cell, embedding_classes=num_encoder_symbols,
    embedding_size=embedding_size)
encoder_outputs, encoder_state = rnn.rnn(
    encoder_cell, encoder_inputs, dtype=dtype)

第一行用嵌入包包装单元格。第二个在encoder_cell上运行encoder_inputs (tf/python/ops/rnn.py的第210-228行)。

如果没有,它是否只是采用普通LSTM编码器的每一时间步骤的隐藏层输出,从而将上下文限制在其前面的句子中的单词上?

是这样的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40044937

复制
相关文章

相似问题

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