Ошибка при проверке ввода: ожидалось, что lstm_29_input будет иметь форму (Нет, Нет, 2), но получил массив с формой (51, 1, 10) - PullRequest
0 голосов
/ 15 февраля 2019

Мой код выглядит следующим образом:

tfidf_matrix=dataset[:0,10]

model = Sequential()

input_shape = tfidf_matrix.shape

model.add(LSTM(32, input_dim=2, return_sequences=True, input_shape=input_shape))

model.add(LSTM(64, input_dim=2, input_shape=input_shape, return_sequences=True))

model.add(Dropout(0.5))

model.add(Dense(1))

model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='rmsprop')

model.fit(X_train, Y_train, batch_size=20, nb_epoch=11)

score = model.evaluate(X_test, Y_test, batch_size=20)

фрагмент моего набора данных выглядит следующим образом (Это для двоичной классификации):

197.2468966,210.0796552,0.579310345,899.0698276,721.1689655,95.52396817,90.59689707,2.620225801,80.53794681,152.6919308,0

200.7320616,213.6853999,0.653851798,856.1059428,841.3118122,97.48691388,92.08916212,2.753934571,100.4151651,161.5956683,1

225.5475209,250.124516,0.735856126,878.6098414,924.2562758,110.4606583,101.748855,2.885445826,77.50833011,109.0694556,0

Я постоянно получаюОшибка примерно такая: "Error when checking input: expected lstm_9_input to have 3 dimensions, but got array with shape (51, 10)" in model.fit() Пожалуйста, помогите

1 Ответ

0 голосов
/ 15 февраля 2019

Прежде всего, вы должны использовать аргумент input_shape только в первом слое модели.Остальные слои будут автоматически вычислять свою входную форму.

Во-вторых, вы должны использовать только один из аргументов input_dim и input_shape в вашем первом слое LSTM.Аргумент input_dim указывает, сколько измерений имеет каждый временной шаг вашей последовательности, тогда как input_shape указывает длину и измерения последовательности.Вы должны не включать размер пакета во входную форму.Итак, если ваши тренировочные данные имеют форму (batch_size, seq_length, dim), входная форма вашего первого слоя должна быть (seq_length, dim).

В вашем случае, похоже, что ваши данные имеют 10 временных шагов и только 1 измерение (т.е.одно число за шаг).Итак, ваши тренировочные данные должны иметь форму (batch_size, 10, 1), а ваши input_shape в первом слое должны быть (10, 1).

...