我是一个新的keras用户,我想要轻松理解如何构建lstm模型。如何处理LSTM模型中的一些时间序列?
在我的数据,我有很多的用户,其中有许多序列,如下:
user 1 :
X Labels
sequence 1 [ 0, 1 , 0, 1]
sequence 2 [ 0, 1 , 0, 1]
sequence 3 [ 0, 1 , 0, 1
sequence 4 ?
user 2 :
X labels
sequence 1 [ 0, 1 , 0, 1]
sequence 2 [ 0, 1 , 0, 1]
sequence 3 ?
每个用户都有序列系列,但不一定是相同的lenght系列。每个系列都对应一个多标签系列。 我的目标是预测每个用户下一个序列的标签,并考虑最后的序列(如时间序列)。
我成功了,当我只使用一个用户。事实上,我做了一个像 (批量大小,时间步长,特征)的输入,其中批量大小等于1,因为我有一个用户,时间步长等于序列的数量,特征等于序列长度。
model_rnn = Sequential()
model_rnn.add(LSTM(20, return_sequences=True, input_shape=(None, 20)))
model_rnn.add(TimeDistributedDense(nb_classes))
model_rnn.add(Activation("sigmoid"))
optimizer = RMSprop(lr=0.01,decay=1e-6)
model_rnn.compile(loss='binary_crossentropy', optimizer=optimizer)
X_train = X_train.reshape((1,50,20))
y_train = y_train.reshape((1,50,109))
model_rnn.fit(X_train,y_train, batch_size=1, epochs=200)
我有两个问题: 它是重要的,当我适合的模式,即洗牌=假?
当我定义LSTM时,我应该将有状态选项等于True吗?
我已经获得了一个用户的良好表现。我想对所有用户使用相同的方法。但我不明白我如何为所有用户构建输入。
例如,我想学习旧的用户序列并预测他的下一个序列, 我是否会被迫为每个用户训练一个LSTM?或者我可以在一个LSTM中倾斜每个用户的时间序列? 特别是如果我使用一个LSTM,并且我想预测下一个用户的序列,那么模型如何能够预测好句子,就好像它不知道训练数据上的这个自己的旧序列。
注意,重要的是要考虑用户之间的序列是独立的。
谢谢您的帮助