我是一個新的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,並且我想預測下一個用戶的序列,那麼模型如何能夠預測好句子,就好像它不知道訓練數據上的這個自己的舊序列。
注意,重要的是要考慮用戶之間的序列是獨立的。
謝謝您的幫助