2 回答

TA貢獻1860條經(jīng)驗 獲得超8個贊
LSTM(與感知器不同)不是前饋網(wǎng)絡(luò)。它需要歷史來預(yù)測下一點。因此,LSTM 的適當(dāng)輸入張量應(yīng)該具有形狀(timesteps, num_features)
,這意味著每個樣本都是一系列timesteps
觀察結(jié)果,使得細胞狀態(tài)在序列的第一次觀察中啟動并貫穿整個序列。
因此,輸入張量應(yīng)具有以下形狀(num_sequences, seq_length, num_features)
:
num_sequences
:樣本數(shù),即你需要多少個序列來訓(xùn)練模型?seq_length
: 這些序列有多長。對于可變長度序列,您可以提供None
.num_features
: 在給定的序列中有多少個特征有一個單一的觀察?

TA貢獻1875條經(jīng)驗 獲得超3個贊
LSTM 層的輸入是一個 3d 張量,形狀為 (data_length, timesteps, n_features)
為此,您首先必須使用以下方式轉(zhuǎn)換數(shù)據(jù):
def slice_data(self, data, n_steps, n_ahead=1):
X_data = data.drop(['y'], axis=1)
y_data = data['y']
X = []
y = []
for i in range(len(X_data)):
end_point = i + n_steps
if end_point + n_ahead > len(X_data)-1:
break
slice_x, slice_y = X_data[i:end_point], y_data.loc[end_point]
X.append(slice_x)
y.append(slice_y)
X, y = np.array(X), np.array(y)
self.n_features = X.shape[2]
X = X.reshape((X.shape[0], X.shape[1], X.shape[2]))
return X, y
或者您可以使用我自己制作的工具:EasyLSTM EasyLSTM 只需一行代碼即可將您的輸入數(shù)組塑造成對 LSTM 友好的數(shù)組
添加回答
舉報