具有一个功能的多个时间步的keras嵌入层修改

问题描述

我有一个序列预测问题,在给定序列中的最后n个项目的情况下,我需要预测下一个项目。现在有N=60k个序列,对于每个序列n我有6 events,并且我想predict next(7th in this case) event。数据集看起来像这样

seq_inputs = [
["AA1","BB3","CC4","DD5","AA2","CC8","CC11"],#CC11 is target
["FF1","DD3","FF6","KK8","AA5","AA2"]   #AA2 will be target
..
..
] # there are 60k of them i.e len(seq) = 60000

我到目前为止所做的事情:

现在,我将其转换为下一个单词预测问题,并使用embedding + LSTm。

首先,我标记它们并使用keras tokenizer.text_to_sequence()

将它们转换为数字形式

从这个数字转换后的序列中,我将最后一个作为目标,将前六个作为输入(如下所示)。

seq_inputs = [
    [1,10,200,5,3,90 ],[95,15,4,11,78,43]
    ..
    ..
    ] 
targets = [40,...,... ]

然后我将目标转换为“类别”

targets = to_categorical(targets,num_classes=vocabulary_size)

SO,我将其输入嵌入和LSTM中

model = Sequential()
model.add(Embedding(vocabulary_size,32,input_length=seq_len)) #seq_length
model.add(LSTM(80,return_sequences=True))
..
..
..
model.fit(train_inputs,train_targets,epochs=50,verbose=1,batch_size=32)

当前,我的测试性能非常差,我觉得我不能很好地利用LSTM来执行顺序任务,因此我想将此问题转换为Many-to-One Sequence Problems with a Single Feature,其中我将有6个时间步长,每个序列都有一个功能。例如

输入(6个时间步长和N(60k)中每个序列n的一个特征:

seq = [[[ 1],[10],[200],[5],[3],[90],],[[ 95],[15],[4],[11],[78],[43],...
       ...
      ... #60,000 of them
      ]

目标

targets = [40,... ]

问题:如何修改此网络,特别是嵌入层以采用这种输入形式,其中EACH seq / row是6个时间步长,并且只有一个功能。另外,我的理解关于6个时间步长和一个未来是正确的,如果是的话,我还需要在网络中进行哪些修改

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)