如何一个输入和三个输出LSTM张量流

时间:2018-03-13 10:50:58

标签: python tensorflow keras lstm rnn

我正在努力学习LSTM并且我有一个混乱,如果我有一个单词列表如下:

vocabulary=['hello','how','are','you','tell','me','something','about','yourself']

现在我想提供一个输入:

ex :  input_data = ['hello']

我希望它能预测下三个词:

ex :  output_data = ['how','are','you']

所以我想通过随机选择4个单词来训练LSTM,然后将单词列表作为1输入作为输入,将3作为输出。

让我们举一个简单的例子:

ex :  input_data = ['hello']


ex :  output_data = ['how','are','you']

将它们转换为热点之后:

final_input=[]
for i in x_data:
    matrix = [0] * len(main_vocabulary)
    matrix[main_vocabulary.index(i)]=1
    final_input.append(matrix)


output=[main_vocabulary.index(i) for i in y_data]

print(final_input)

print(output)

[[1, 0, 0, 0, 0, 0, 0, 0, 0]]
[1, 2, 3]

现在我的困惑是如何将这种格式提供给LSTM?

因为我已经读过LSTM输入和输出矢量形状应该是相同的,它是真的吗?

input_placeholder=tf.placeholder(tf.float32,[None,1,9])
output_placeholder=tf.placeholder(tf.int32,[None,3])

但我不认为这是正确的,如何喂养请建议。

rnn.BasicLSTMCell(num_units=?,state_is_tuple=True)

中的num_units数量是多少?

我在想的是num_units应该与数据列相同所以这里它应该是9。

1 个答案:

答案 0 :(得分:1)

从概念上讲,最简单的方法是对RNN进行排序的序列。也应该可以使用普通的RNN,虽然输入和输出上的可变长度都可以编程(如果你想在将来更改它们)。

查看http://karpathy.github.io/2015/05/21/rnn-effectiveness/(标准RNN介绍博客 - 我确定您之前已经看过这个),并注意说明各种类型RNN的图表。您需要一对多配置。

说实话,听起来你可能有点过头了。我建议通过研究https://github.com/guillaume-chevalier/seq2seq-signal-prediction

来了解RNN的基本原理