У меня есть данные, что работа над многоуровневой архитектурой Perceptron выглядит следующим образом
X_train_feature.shape
(52594, 16)
X_train_feature[0]
array([1.18867208e-03, 1.00000000e+00, 8.90000000e+01, 8.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00])
y_train
(52594, 2)
y_train[0].toarray()
array([[0., 1.]])
По первому измерению: число выборок, а второе: для X_train - количество объектов, а в y_train это кодировщик, поддерживающий горячую обработку.
И я хочу использовать те же данные в LSTM / Bi-LSTM, поэтому я копирую код из inte rnet и изменяю входное значение на то же, что и MLP
def define_model():
model = Sequential()
model.add(LSTM(20, input_shape=X_train_feature[0].shape, return_sequences=True))
model.add(TimeDistributed(Dense(1, activation='sigmoid')))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) # compile
print('Total params: ', model.count_params())
return model
Но когда я пытаюсь создать модель, добавляется ошибка о форме ввода
model = define_model()
ValueError: Input 0 is incompatible with layer lstm_30: expected ndim=3, found ndim=2
Что мне нужно настроить, чтобы данные применялись в LSTM, или мне нужно изменить архитектуру конфиг? Большое вам спасибо.