Python keras, как изменить размер ввода после слоя свертки в слой lstm

У меня проблема с соединением между слоем свертки и слоем lstm. Данные имеют форму (75,5), где для каждого временного шага есть 75 временных шагов x 5 точек данных. Я хочу сделать свертку (75x5), получить новые свернутые (75x5) данные и передать эти данные в слой lstm. Однако это не работает, потому что форма вывода слоя свертки имеет ряд фильтров, которые мне не нужны. И, следовательно, форма вывода сверточного слоя равна (1,75,5), а вход, необходимый для слоя lstm, равен (75,5). Как мне просто взять первый фильтр.

model = Sequential() 
model.add(Convolution2D(1, 5,5,border_mode='same',input_shape=(1,75, 5)))
model.add(Activation('relu'))
model.add(LSTM(75, return_sequences=False, input_shape=(75, 5)))
model.add(Dropout(0.5))
model.add(Dense(1))
model.compile(loss='mse', optimizer='rmsprop')

И это ошибка, которая появляется:

File "/usr/local/lib/python3.4/dist-packages/keras/layers/recurrent.py", line 378, in __init__
super(LSTM, self).__init__(**kwargs)
File "/usr/local/lib/python3.4/dist-packages/keras/layers/recurrent.py", line 97, in __init__
super(Recurrent, self).__init__(**kwargs)
File "/usr/local/lib/python3.4/dist-packages/keras/layers/core.py", line 43, in __init__
self.set_input_shape((None,) + tuple(kwargs['input_shape']))
File "/usr/local/lib/python3.4/dist-packages/keras/layers/core.py", line 138, in set_input_shape
', was provided with input shape ' + str(input_shape))
Exception: Invalid input shape - Layer expects input ndim=3, was provided with input shape (None, 1, 75, 5)

1 ответ

Решение

Вы можете добавить слой Reshape() между ними, чтобы сделать размеры совместимыми.

http://keras.io/layers/core/

keras.layers.core.Reshape(dims)

Изменить форму вывода в определенную форму.

Форма ввода

Произвольно, хотя все размеры на входе должны быть фиксированными. Используйте ключевое слово аргумент input_shape (кортеж целых чисел, не включая ось сэмплов) при использовании этого слоя в качестве первого слоя в модели.

Форма выхода

(batch_size,) + dims

аргументы

dims: целевая форма. Кортеж целых чисел, не включает размер выборки (размер партии).

Другие вопросы по тегам