【发布时间】:2019-04-29 19:09:14
【问题描述】:
我正在尝试使用 LSTM 自动编码器 (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)
培训:
Epoch 1/100
5/5 [==============================] - 2s 384ms/step - loss: 0.1603
...
Epoch 100/100
5/5 [==============================] - 2s 388ms/step - loss: 0.0018
训练后,我尝试重建 5 个样本之一:
yhat = model.predict(np.expand_dims(data[1,:,:], axis=0), verbose=0)
重构:蓝色
输入:橙色
为什么在损失很小的情况下重建如此糟糕?我怎样才能使模型更好?谢谢。
【问题讨论】:
-
您能显示从
data[0,:,:]到data[4,:,:]的所有图表吗?
标签: python keras time-series lstm autoencoder