如何解决具有一个功能的多个时间步的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 举报,一经查实,本站将立刻删除。