#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, да