【发布时间】:2018-10-01 10:04:39
【问题描述】:
我正在尝试构建一个 LSTM 自动编码器来预测时间序列数据。由于我是 Python 新手,我在解码部分有错误。我试着像here 和Keras 那样构建它。我根本无法理解给定示例之间的区别。我现在的代码如下所示:
问题1:每个样本有2000个值时,batch_size和input_dimension如何选择?
问题 2:如何让这个 LSTM 自动编码器工作(模型和预测)?这只是模型,但如何预测?它是从假设从样本 10 开始到数据结束的预测?
Mydata 总共有 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)
【问题讨论】:
-
你会通过反复试验找到
batch_size,但应该小于1500。 -
@Juan 谢谢你的建议,请问模型的实现有什么问题,你能帮我吗?
-
@Juan 我也提到了那个问题,但我不明白我有一个 RepeatVector 的区别,他的做法不同,但仍然无法正确编程两个版本
-
我将更改
rmsprop的损失和mse的优化器,因为它是自动编码器