Ошибка: ожидаемый min_ndim=3, найден ndim=2. хотя сетевой вход 2d (lstm)

#machine-learning #keras #deep-learning #lstm #tf.keras

Вопрос:

У меня есть сеть для классификации последовательностей:

 input_shape = (500, )
model = Sequential()
model.add(Conv1D(filters=conv_filters, kernel_size=conv_kernel_size,
                 padding='valid', activation='relu', input_shape=input_shape))
model.add(Conv1D(filters=conv_filters, kernel_size=conv_kernel_size,
                 padding='valid', activation='relu'))
model.add(LSTM(units=lstm_units, dropout=0.1, recurrent_dropout=0.1))
model.add(Dense(n_classes, activation="softmax"))

model.compile(loss='categorical_crossentropy', optimizer='adam',
              metrics=['accuracy'])
 

И я пытаюсь убежать:

 model.fit(X,y)
 

Когда форма X есть <1200, 500 > , а форма y есть <12000>
Я получаю ошибку:

 ValueError: Input 0 of layer conv1d is incompatible with the layer: : expected min_ndim=3, found ndim=2. Full shape received: (None, 500)
 

Но я не уверен, почему, так как это должно быть только 2d.
Что я здесь делаю не так?

Спасибо

Комментарии:

1. ваш ввод должен быть 3d: (образцы, временные интервалы, функции)

2. @MarcoCerliani, но где NN, определены/используются временные интервалы? Итак, если я хочу, чтобы мои временные интервалы были равны 100, каков наилучший способ изменить NN и соответствующим образом преобразовать массив?

3. вы должны соответствующим образом изменить свои данные,а затем установить input_shape=(шаг по времени, функции) в вашем первом слое conv

4. @MarcoCerliani Итак, предполагая, что у 1 есть 1d, тогда X должен иметь форму (5, 100, 1) вместо (500, 1) и input_shape = (100, 1)?

5. если 5-ваши n_samples, 100-временные шаги, а 1-n_features, да