Формат ввода для двоичной классификации многомерных временных рядов - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь использовать модель LSTM для двоичной классификации на многомерных данных временных рядов. У меня есть семь свойств, собранных в течение дня примерно за 100 дней (то есть 100 массивов размеров [9000, 7]). Каждый из этих массивов имеет один статус классификации 1 или 0.

Я начал пытаться построить простейшую возможную модель, учитывая, что я новичок в Keras и машинном обучении в целом, но я продолжаю получать ошибки, касающиеся формы ввода, когда я пытаюсь их обучить. Например, мои первые слои:

model = Sequential()
model.add(Conv2D(32, (3,3), input_shape=(9000,7,1), activation='relu'))
...
model.fit(x=X_train, y=Y_train, epochs=100) 

С X_train типа float64 и размером (100L, 9000L, 7L) я получаю сообщение об ошибке:

ValueError: Ошибка при проверке ввода: ожидалось, что conv2d_11_input будет иметь 4 измерения, но получит массив с формой (100L, 9000L, 7L)

Я попытался изменить размер пакета и количество эпох без успеха, поэтому кто-то может объяснить, как правильно изменить мою входную информацию? Я что-то упустил?

1 Ответ

0 голосов
/ 17 мая 2018

Я подозреваю, что вы хотите использовать Conv1D (3D-данные), нет?
Вы используете Conv2D (данные 4D = изображения).

Для любого Conv1D и любого из RNN слоев, таких как LSTM, ваш ввод является трехмерными данными, а ваш input_shape должен быть input_shape=(9000,7).


Входные данные должны быть массивом с формой (100,9000,7), что уже соответствует содержанию сообщения об ошибке.


Предполагая, что каждый день - это отдельная последовательность, и вы не хотите связывать дни.

...