在 Keras 中重塑 LSTM 的批次
Reshaping a batch for LSTM in Keras
通过使用 LSTM 自动编码器,我在根据 LSTM 需求调整数据集时遇到了一些问题。
由于我是批量训练,所以我生成了一个 windows 的时间序列循环 - 代码如下所示:
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 变量)构成。
我读到我需要按照以下格式重塑我的数据(samples, timesteps, features)
但我在某处失败并且缺少一些信息。
我的假设是 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)
由于我对上下文了解不多,所以无法为您提供更多帮助,但这应该可以解决重塑问题。
通过使用 LSTM 自动编码器,我在根据 LSTM 需求调整数据集时遇到了一些问题。 由于我是批量训练,所以我生成了一个 windows 的时间序列循环 - 代码如下所示:
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 变量)构成。
我读到我需要按照以下格式重塑我的数据(samples, timesteps, features)
但我在某处失败并且缺少一些信息。
我的假设是 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)
由于我对上下文了解不多,所以无法为您提供更多帮助,但这应该可以解决重塑问题。