人们谈论LSTM预测下一个时间步骤。这意味着它应该识别一个模式来进行预测。假设它在学习阶段经常看到1 2 3个序列。因此,当它看到1 2它将预测3.对吗?
但是,如果我不想预测这个数字怎么办?如果我需要LSTM来识别无法简单量化的模式,该怎么办?
这是一个例子。波浪。你是LSTM,而且你在海滩上(很棒!)。你计算波浪。你的输入是3d矢量。每次观察都是{高度,速度,时间}(时间是自上次观察以来的秒数 - 这一点非常重要,因为波以不同的间隔出现)。但是你可以看到距离海滩100米的海浪。你站在水边10米处。
我希望你能识别波浪模式,这会导致你的脚被波浪序列弄湿。
所以这个问题有两个不同的挑战。
一个是"迫近" - 由于波浪的速度不同,因此不可能知道波浪到达你的脚需要多长时间。不同的模式将在不同的时间内完成。因此,当LSTM识别出良好的模式时,时间步长M与当它到达你的脚时的时间步长N之间的距离将对每个良好的模式都持谨慎态度。
第二个输出(比如我想要0或1)不在输入序列中。它没有预测下一波预测0/1。
有人能建议这种LSTM的高级架构吗?我该如何编程"湿脚"?在批次ML中,它将被称为监督,我会用"湿脚"标记某些数据点。标签。
这是另一个考虑因素。也许它应该叠加。说3个LSTM。因为一些波浪将对湿脚事件做出重大贡献,而另一些则不然。我想可能是我需要1台机器学习小图案和2台机器来学习模式和3台机器来实际预测湿脚...
思想?
答案 0 :(得分:1)
查看https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py以获取将LSTM用于分类任务的示例。最基本的架构只是一个LSTM层,后跟一个输出节点:
model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))