LSTM для 1D ввода - исключение TensorFlow - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю над двухслойным RNN (LSTM).Я думаю, что я успешно изменил форму своего поезда и тестового набора, но когда я пытаюсь запустить код, он останавливается с исключением:

Исключение: при использовании TensorFlow вы должны явно указать количество временных шаговваши последовательности.Если ваш первый слой является Embedding, обязательно передайте ему аргумент «input_length».В противном случае, убедитесь, что первый слой имеет аргумент «input_shape» или «batch_input_shape», включая ось времени.

Я пробовал несколько настроек, но никто не работает хорошо.Я не знаю, как это исправить ..

Вот код, в котором я создаю модель и изменяю X_train и X_test

X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], EMB_SIZE))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], EMB_SIZE))


print 'Building model...'

model = Sequential()

model.add(LSTM(input_dim=EMB_SIZE, output_dim=100, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2], 1)))
model.add(LSTM(input_dim=EMB_SIZE, output_dim=100, return_sequences=False,input_shape=(X_train.shape[1], X_train.shape[2], 1)))

model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(optimizer='adam', 
              loss='mse',
              metrics=['accuracy'])

model.fit(X_train, 
          Y_train, 
          nb_epoch=5, 
          batch_size = 128, 
          verbose=1, 
          validation_split=0.1)


score= model.evaluate(X_test, Y_test, batch_size=128)
print score

любая помощь действительно приветствуется!

Заранее спасибо <3 </p>

1 Ответ

0 голосов
/ 05 декабря 2018

Количество единиц в последнем слое определяет выходную форму модели.

Выходная форма должна совпадать с формой ваших целей (Y).

  • Dense(2) -> Форма вывода = (Нет, 2)
  • Dense(1) -> Форма вывода = (Нет, 1)
  • Y_train -> Форма цели = (15015,1)

Ух ты ... Керас 0,3,3?Неудивительно, что все будет проблематично.

...