Lstm
使用 Keras 了解 LSTM 中的 input_shape 參數
我正在嘗試使用名為“用於序列分類的堆疊 LSTM”的 Keras 文檔中描述的示例(請參見下面的代碼),並且無法在我的數據上下文中找出
input_shape
參數。我輸入了一個由 25 個可能的字符組成的序列矩陣,這些字符以整數編碼為最大長度為 31 的填充序列。因此, my
x_train
具有形狀(1085420, 31)
含義(n_observations, sequence_length)
。from keras.models import Sequential from keras.layers import LSTM, Dense import numpy as np data_dim = 16 timesteps = 8 num_classes = 10 # expected input data shape: (batch_size, timesteps, data_dim) model = Sequential() model.add(LSTM(32, return_sequences=True, input_shape=(timesteps, data_dim))) # returns a sequence of vectors of dimension 32 model.add(LSTM(32, return_sequences=True)) # returns a sequence of vectors of dimension 32 model.add(LSTM(32)) # return a single vector of dimension 32 model.add(Dense(10, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) # Generate dummy training data x_train = np.random.random((1000, timesteps, data_dim)) y_train = np.random.random((1000, num_classes)) # Generate dummy validation data x_val = np.random.random((100, timesteps, data_dim)) y_val = np.random.random((100, num_classes)) model.fit(x_train, y_train, batch_size=64, epochs=5, validation_data=(x_val, y_val))
在此代碼
x_train
中,形狀(1000, 8, 16)
為 1000 個數組,其中 8 個數組包含 16 個元素。在那裡,我完全迷失了我的數據是什麼以及如何達到這種形狀。查看 Keras 文檔以及各種教程和問答,我似乎遺漏了一些明顯的東西。有人可以告訴我要尋找什麼嗎?
謝謝你的幫助 !
LSTM 形狀很難,所以不要難過,我不得不自己花幾天時間與它們作鬥爭:
如果您一次輸入 1 個字符,則輸入形狀應為 (31,1),因為您的輸入有 31 個時間步,每個時間步 1 個字符。您需要將 x_train 從 (1085420, 31) 重塑為 (1085420, 31,1),這很容易使用以下命令完成:
x_train=x_train.reshape(x_train.shape[0],x_train.shape[1],1))