簡體   English   中英

在 Keras 中重塑 LSTM 的批次

[英]Reshaping a batch for LSTM in Keras

通過使用 LSTM 自動編碼器,我在根據 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 變量)組成。

我讀到我需要按照以下格式(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)

由於我不了解更多上下文,因此我無法為您提供更多幫助,但這應該可以解決重塑問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM