I'M训练LSTM进行时间序列预测,其中数据来自传感器以不规则的间隔来自传感器。我正在使用最后5分钟的数据来预测下一个值,但是某些序列大于OTH ...

问题描述 投票:0回答:1

我做错了什么?我该如何训练?

在这里我尝试训练LSTM:

def lstmFit(y, X, n_hidden=1, n_neurons=30, learning_rate=1e-2): lstm = Sequential() lstm.add(Masking(mask_value=np.nan, input_shape=(None, X.shape[2]))) for layer in range(n_hidden): lstm.add(LSTM(n_neurons, activation="tanh", recurrent_activation = "sigmoid", return_sequences=True)) lstm.add(Dense(1)) lstm.compile(loss="mse", optimizer="adam") early_stopping = EarlyStopping(monitor='loss', patience=10, verbose=1, restore_best_weights=True) lstm.fit(X, y.reshape(-1), epochs=100, callbacks=[early_stopping]) y_train_fit = lstm.predict(X) return lstm, y_train_fit

模型的摘要:

lstm.summary() Model: "sequential_9" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= masking_7 (Masking) (None, None, 15) 0 lstm_6 (LSTM) (None, None, 30) 5520 dense_10 (Dense) (None, None, 1) 31 ================================================================= Total params: 5551 (21.68 KB) Trainable params: 5551 (21.68 KB) Non-trainable params: 0 (0.00 Byte) _________________________________________________________________

和训练的第一个时期:

Epoch 1/100 18/18 [==============================] - 20s 335ms/step - loss: nan Epoch 2/100 18/18 [==============================] - 6s 335ms/step - loss: nan Epoch 3/100 18/18 [==============================] - 7s 365ms/step - loss: nan

	
您可以尝试:

将输入中的所有NAN值用0。或其他值更有意义。
切割序列,因此序列的长度等于最小序列的长度。
序列中的最后一个或第一个数据点序列中的最后一个数据点,因此所有序列均具有相同的长度(最大序列长度)。
plick以更有意义的措施。如果您不知道哪个更好,请尝试所有这些并比较结果。
    
machine-learning keras time-series lstm training-data
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.