tensorflow中的seq2seq文档解读

sequence-to-sequence 模型的种类很多,每一种模型都可以使用不同的RNN单元,但是都必须以 encoder inputs 和decoder inputs作为参数。在tf.nn.seq2seq接口中有各种RNN encoder-decoder sequence-to-sequence模型,最基本的是这个样子:

outputs, states = basic_rnn_seq2seq(encoder_inputs, decoder_inputs, cell)

encoder_inputs 是一个tensors的列表,代表encoder的输入,例如上图的A,B,C。同样,decoder_inputs是代表decoder的tensors,例如上图的GO, W, X, Y, Z。

cell是类models.rnn.rnn_cell.RNNCell 的实例,决定了模型使用哪种cell,你可以用GRUCell 或者 LSTMCellrnn_cell提供了wrappers建立多层cells,也可以 cell inputs 或者outputs添加dropout ,等等,具体可以参考RNN Tutorial 。

basic_rnn_seq2seq返回2个参数,outputsstates。它们都是tensors列表,长度与decoder_inputs相同。outputs对应于每个时间步长中的解码器的输出,在上图中是W,X,Y,Z,EOS。states表示在每个时间步长的解码器的内部状态。

在sequence-to-sequence 模型的很多应用中,t时刻解码器的输出将反馈成为t+1时刻的输入。测试时,这就是通过解码构建序列的方法。另一方面,训练的时候,通常在每个时间步骤向解码器提供正确的输入,即使解码器之前犯了错误。 seq2seq.py中的函数使用feed_previous参数支持这两种模式。例如,以embedding RNN模型为例。

outputs, states = embedding_rnn_seq2seq(
    encoder_inputs, decoder_inputs, cell,
    num_encoder_symbols, num_decoder_symbols,
    output_projection=None, feed_previous=False)

embedding_rnn_seq2seq模型中,所有的输入ÿ

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值