Indexerror: за пределами ошибки размера в keras convnet1D

Я пытаюсь использовать CNN 1D для прогнозирования временных рядов. У меня есть набор данных временных рядов с 30 функциями, 3 целями и более чем 3000 строк.

Это моя модель Кераса

model = Sequential()
model.add(Embedding(64, 10, batch_input_shape=  (100,30))) #100 time steps and 30 features
model.add(Convolution1D(nb_filter=256,
                    filter_length=3,
                    border_mode='valid',
                    activation='relu',
                    subsample_length=1))

model.add(MaxPooling1D())
model.add(Convolution1D(nb_filter=150,
                    filter_length=3,
                    border_mode='valid',
                    activation='relu',
                    subsample_length=1))
model.add(MaxPooling1D())
model.add(Flatten())
model.add(Dropout(0.2))
model.add(Dense(3))
model.add(Activation('tanh'))
optimizer = RMSprop(lr=0.01)
model.compile(loss='mse', optimizer=optimizer)

model.fit(x,y)

Модель компилируется без ошибок, но когда я попытался подогнать модель, она выдала эту ошибку.

IndexError: index 124 is out of bounds for size 64
Apply node that caused the error: AdvancedSubtensor1(embedding_17_W, Reshape{1}.0)

Я видел этот ответ, но мои x (функция) и y (цель) уже представлены в виде пустого массива. Как это решить?

ОТРЕДАКТИРОВАНО

После некоторого возни я обнаружил, что проблема вызвана самой моей моделью CNN. Я попытался обучить тот же набор данных с помощью простой нейронной сети, и он работал без проблем.

model = Sequential()
model.add(Dense(30, input_dim=30))
model.add(Activation('tanh'))
model.add(Dense(15))
model.add(Activation('tanh'))
model.add(Dropout(0.2))
model.add(Dense(3))
model.add(Activation('tanh'))
optimizer = RMSprop(lr=0.01)
model.compile(loss='mse', optimizer=optimizer)

model.fit(x,y)

Кто-нибудь знает, что не так с моей моделью CNN?


person Eka    schedule 18.01.2017    source источник
comment
Проблема в вашем слое Embedding: вместо 64 должно быть 1 + max_index   -  person Alexey Golyshev    schedule 18.01.2017
comment
выдает ту же ошибку IndexError: index 3 is out of bounds for size 1   -  person Eka    schedule 18.01.2017
comment
Вы меня не понимаете. См. документацию по Keras: input_dim: int > 0. Size of the vocabulary, ie. 1 + maximum integer index occurring in the input data Ваше встраивание должно быть 125 или больше. Оцените numpy.max(x) и плюс 1 (индекс 0 зарезервирован для неизвестных значений).   -  person Alexey Golyshev    schedule 18.01.2017