我正在尝试构建LSTM AutoEncoder,但是由于符合LSTM的需求,我在数据整形过程中遇到了一些问题。
由于我正在对在时间序列的窗口循环内生成的批次进行训练,因此代码如下所示:
X_batch = np.array(file.loc[window * WINDOWS_SIZE:(window + 1) * WINDOWS_SIZE - 1], dtype="f")
print(X_batch.shape)
X_batch = np.reshape(1, WINDOWS_SIZE, cluster_feature_size)
print(X_batch.shape)
history = model.fit(X_batch, X_batch, epochs=1, verbose=False)
我的批次具有48个数据点(WINDOWS_SIZE)和45个度量标准(cluster_feature_size变量)的形状。我已经读到我必须以以下格式(样本,时间步长,特征)重塑数据,但是我在某处失败并缺少一些信息。
我认为1个样本是1个批次,一个批次中我有48个数据点,因此我放置了48个时间步长,最后给出了批次中我拥有的时间序列指标的数量。
有什么事吗
到目前为止,我已经构建的架构模型的草案如下:
model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(WINDOWS_SIZE, cluster_feature_size)))
model.add(RepeatVector(WINDOWS_SIZE))
model.add(Dense(1))
model.add(LSTM(100, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(1)))
我遵循了一个在线教程来构建该模型,但从概念上讲仍然不那么深入,我希望首先能够运行一个模型。
重塑时出现以下错误:
(48, 45)
---> 17 X_batch = np.reshape(1, WINDOWS_SIZE, cluster_feature_size)
ValueError: cannot reshape array of size 1 into shape (48,)
在此先感谢您的提示,并让我知道是否为了明确起见必须对问题进行编辑。
最佳答案
此处无需重塑:
import numpy as np
X = np.random.rand(48, 45)
X = np.array([X])
print(X.shape)
给我:
>>> (1, 48, 45)
由于我对上下文的了解不多,因此我无法为您提供更多帮助,但这应该可以解决重塑问题。
关于python - 重塑Keras中LSTM的批次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53813158/