如何使用具有不同长度的序列数据的LSTM与keras而不嵌入?

时间:2017-06-26 10:22:49

标签: python keras lstm

我有一个输入数据,其中每个例子都是长度为k的一些不同数量的向量。我总共有n个例子。所以输入的维数是n *? * k。问号象征着不同的长度。

如果可能,我想将其输入到Keras的LSTM图层,不使用嵌入(它不是普通的单词数据集)。

有人可以写一个如何做到这一点的简短例子吗?

数据当前是双嵌套python数组,例如

example1 = [[1,0,1], [1,1,1]]
example2 = [[1,1,1]]
my_data = []
my_data.append(example1)
my_data.append(example2)

2 个答案:

答案 0 :(得分:0)

我认为你可以使用pad_sequences。这应该使您的所有输入都达到相同的长度。

答案 1 :(得分:0)

您可以使用填充(pad_sequences)和Masking图层。

您还可以在手动训练循环中训练不同长度的批次:

for e in range(epochs):
    for batch_x, batch_y in list_of_batches: #providade you separated the batches by length
        model.train_on_batch(batch_x, batch_y)

所有这一切的关键是您的input_shape=(None, k)