Lstm

使用 Keras 了解 LSTM 中的 input_shape 參數

  • April 19, 2017

我正在嘗試使用名為“用於序列分類的堆疊 LSTM”的 Keras 文檔中描述的示例(請參見下面的代碼),並且無法在我的數據上下文中找出input_shape參數。

我輸入了一個由 25 個可能的字符組成的序列矩陣,這些字符以整數編碼為最大長度為 31 的填充序列。因此, myx_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))

引用自:https://stats.stackexchange.com/questions/274478

comments powered by Disqus