我正在尝试构建一个LSTM自编码器来预测时间序列数据。由于我是Python的新手,在解码部分有一些错误。我试图像这里和Keras中所示的那样建立它。但我完全不理解给出的例子之间的区别。我现在拥有的代码如下:
问题1:每个样本都有2000个值时,如何选择batch_size和input_dimension?
问题2:如何使这个LSTM自编码器工作(模型和预测)?这只是模型,但如何进行预测?例如从第10个样本开始一直预测到数据结尾?
我的数据总共有1500个样本,我会使用10个时间步长(如果更好,则可以使用更多),每个样本有2000个值。如果您需要更多信息,我稍后也可以提供。
trainX = np.reshape(data, (1500, 10,2000))
from keras.layers import *
from keras.models import Model
from keras.layers import Input, LSTM, RepeatVector
参数
timesteps=10
input_dim=2000
units=100 #choosen unit number randomly
batch_size=2000
epochs=20
模型
inpE = Input((timesteps,input_dim))
outE = LSTM(units = units, return_sequences=False)(inpE)
encoder = Model(inpE,outE)
inpD = RepeatVector(timesteps)(outE)
outD1 = LSTM(input_dim, return_sequences=True)(outD
decoder = Model(inpD,outD)
autoencoder = Model(inpE, outD)
autoencoder.compile(loss='mean_squared_error',
optimizer='rmsprop',
metrics=['accuracy'])
autoencoder.fit(trainX, trainX,
batch_size=batch_size,
epochs=epochs)
encoderPredictions = encoder.predict(trainX)
return_sequences=True
修改为return_sequences=False
。 - Juan