如何一进三出LSTM tensorflow
How to One input and Three output LSTM tensorflow
我正在尝试学习 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 。
从概念上讲,最简单的方法是序列到序列 RNN。也应该可以使用普通的 RNN,尽管输入和输出的可变长度编程起来很麻烦(如果你想在将来更改它们)。
看看 http://karpathy.github.io/2015/05/21/rnn-effectiveness/(标准的 RNN 介绍博客 - 我相信你以前看过这个)并注意说明各种类型的 RNN 的图表。您需要 one-to-many 配置。
老实说,听起来您可能有点不知所措。我建议尝试通过研究 https://github.com/guillaume-chevalier/seq2seq-signal-prediction
来了解 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 应该与数据列相同,所以这里应该是 9 。
从概念上讲,最简单的方法是序列到序列 RNN。也应该可以使用普通的 RNN,尽管输入和输出的可变长度编程起来很麻烦(如果你想在将来更改它们)。
看看 http://karpathy.github.io/2015/05/21/rnn-effectiveness/(标准的 RNN 介绍博客 - 我相信你以前看过这个)并注意说明各种类型的 RNN 的图表。您需要 one-to-many 配置。
老实说,听起来您可能有点不知所措。我建议尝试通过研究 https://github.com/guillaume-chevalier/seq2seq-signal-prediction
来了解 RNN 的基础知识