python - 如何使用 tensorflow 中的 seq2seq 预测简单序列?

标签 python tensorflow lstm

我最近开始使用 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))

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

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

最佳答案

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

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

编辑:一些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, 范围=无): ....

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

在解码的时候,需要设置这个loop_function=True

我建议查看 Tensorflow seq2seq 库中的 translate.py 文件以了解其处理方式。

关于python - 如何使用 tensorflow 中的 seq2seq 预测简单序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38050333/

相关文章:

python - 使用python读取excel表时出错

excel - 如何在Excel中使用训练好的深度学习模型进行预测?

python - 估计器预测无限循环

python - 如何修复 pytorch 中的 'Input and hidden tensors are not at the same device'

python - 模块中类的方法看不到我的全局变量()

python - 在 Python 中正确引用 JSON。字符串与整数和嵌套项

python - 无法将 Tensorflow 模型卡住到卡住(.pb)文件中

machine-learning - 如何在CNTK中实现序列分类LSTM网络?

python - 强制 LSTM Keras 使用时间序列依赖项

Python/bs4 : Span inside div tag - text extraction