如何使用张量流的seq2seq预测简单序列?

Dan*_*oss 8 python lstm tensorflow

我最近开始使用tensorflow,所以我仍然在努力学习基础知识.

我想创建简单的seq2seq预测.

  • 输入是0到1之间的数字列表.
  • 输出是列表中的第一个数字,其余数字乘以第一个.

我设法评估模型性能并优化权重.我一直在努力的是如何用训练有素的模型进行预测.

 model_outputs, states = seq2seq.basic_rnn_seq2seq(encoder_inputs,
                                                  decoder_inputs,
                                                  rnn_cell.BasicLSTMCell(data_point_dim, state_is_tuple=True))
Run Code Online (Sandbox Code Playgroud)

为了生成model_outputs,我需要模型的输入和输出值,这有利于评估,但在预测中我只有输入值.我猜我需要对状态做些什么,但我不确定如何将它们转换为浮点序列.

完整代码可在此处 https://gist.github.com/anonymous/be405097927758acca158666854600a2

use*_*691 4

当您进行训练时,您可以将每个解码器时间步长的解码器输入作为所需的输出。测试时,您没有所需的输出,因此您能做的最好的事情就是对输出进行采样。这将是下一个时间步的输入。

太长了;在每个时间步输入解码器输出作为下一个时间步的输入。

编辑:一些TF代码

basic_rnn_seq2seq函数返回s rnn_decoder ( decoder_inputs, enc_states[-1], cell)

让我们看看rnn_decoder: def rnn_decoder(decoder_inputs, initial_state, cell, loop_function= None , scope=None): ....

Loop_function:如果不是 None,则该函数将应用于第 i 个输出以生成第 i+1 个输入,并且解码器输入将被忽略,第一个元素(“GO”符号)除外。这可用于解码,也可用于模拟http://arxiv.org/pdf/1506.03099v2.pdf 的训练。

解码时需要设置这个loop_function= True

我建议查看 Tensorflow seq2seq 库中的 translate.py 文件以了解如何处理此问题。