2016-10-10 4 views
1

Я пытаюсь создать RNN для генерации текста. Я застрял в создании моей ячейки LSTM. Данные имеют такую ​​форму: X - входная разреженная матрица dim (90809,2700), а Y - выходная матрица размерности (90809,27). Ниже приведен код для определения LSTM клеточноСоздание ячейки LSTM с использованием Keras

model = Sequential() 
model.add(LSTM(128, input_shape=(X.shape[0], X.shape[1]))) 
model.add(Dropout(0.2)) 
model.add(Dense(Y.shape[1], activation='softmax')) 
model.compile(loss='categorical_crossentropy', optimizer='adam') 

Я понимаю, что input_shape должен быть размером входной матрицы, а плотный слой должен быть размером выхода для каждого наблюдения, то есть 27 в этом случае. Однако я получаю следующую ошибку:

Exception: Error when checking model input: expected lstm_input_3 to have 3 dimensions, but got array with shape (90809, 2700) 

Я не могу понять, что происходит не так. Может кто-нибудь, пожалуйста, помогите мне выяснить, почему lstm_input ожидает 3 измерения?

Я попытался следующие, как хорошо

X= np.reshape(np.asarray(dataX), (n_patterns, n_vocab*seq_length,1)) 
Y=np.reshape(np.asarray(dataY), (n_patterns, n_vocab,1)) 

Это дало мне следующую error-

Exception: Error when checking model input: expected lstm_input_7 to have shape (None, 90809, 2700) but got array with shape (90809, 2700, 1) 

Любая помощь будет оценена. Благодаря!

ответ

1

Вы должны прочитать о разнице между input_shape, batch_input_shape и input_dimhere.

Для input_shape, нам не нужно определять batch_size. Вот как должен выглядеть ваш слой LSTM.

model.add(LSTM(128, input_shape=(X.shape[1], 1))) 

или

model.add(LSTM(128, batch_input_shape=(X.shape[0], X.shape[1], 1))) 
Смежные вопросы