小编Tom*_*zik的帖子

Keras LSTM自动编码器时间序列重建

我正在尝试使用LSTM Autoencoder(Keras)重建时间序列数据。现在,我想在少量样本上训练自动编码器(5个样本,每个样本的长度为500个时间步长,并且具有1维)。我想确保模型可以重建5个样本,然后再使用所有数据(6000个样本)。

window_size = 500
features = 1
data = data.reshape(5, window_size, features)

model = Sequential()

model.add(LSTM(256, input_shape=(window_size, features), 
return_sequences=True))
model.add(LSTM(128, input_shape=(window_size, features), 
return_sequences=False))
model.add(RepeatVector(window_size))

model.add(LSTM(128, input_shape=(window_size, features), 
return_sequences=True))
model.add(LSTM(256, input_shape=(window_size, features), 
return_sequences=True))
model.add(TimeDistributed(Dense(1)))

model.compile(optimizer='adam', loss='mse')
model.fit(data, data, epochs=100, verbose=1)
Run Code Online (Sandbox Code Playgroud)

模型

训练:

Epoch 1/100
5/5 [==============================] - 2s 384ms/step - loss: 0.1603
...
Epoch 100/100
5/5 [==============================] - 2s 388ms/step - loss: 0.0018
Run Code Online (Sandbox Code Playgroud)

训练后,我尝试重建5个样本之一:

yhat = model.predict(np.expand_dims(data[1,:,:], axis=0), verbose=0)
Run Code Online (Sandbox Code Playgroud)

重构:蓝色
输入:橙色

重构(蓝色)与输入(橙色)

当损失很小时,为什么重建如此糟糕?如何改善模型?谢谢。

python time-series autoencoder lstm keras

14
推荐指数
2
解决办法
1003
查看次数

标签 统计

autoencoder ×1

keras ×1

lstm ×1

python ×1

time-series ×1