Python Keras como alterar o tamanho de entrada depois de camada em camada convolução LSTM

votos
4

Eu tenho um problema com a conexão entre a camada de convolução e camada LSTM. Os dados são de forma (75,5) onde há 75 Timesteps x 5 pontos de dados para cada etapa de tempo. O que eu quero fazer é fazer uma convolução em (75x5), obter novos dados convolvidos (75x5) e alimentar os dados em camada LSTM. No entanto, ele não funciona porque a forma de saída da camada de convolução tem o número de filtros que eu não preciso. E, por conseguinte, a forma de saída camada convolução é (1,75,5) e de entrada necessário para a camada LSTM é (75,5). Como posso simplesmente pegar o primeiro filtro.

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')

E este é o erro que surge:

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)
Publicado 07/02/2016 em 11:34
fonte usuário
Em outras línguas...                            


1 respostas

votos
4

Você pode adicionar Reshape () camada no meio para fazer dimensões compatíveis.

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

keras.layers.core.Reshape(dims)

Remodelar uma saída para uma determinada forma.

forma de entrada

Arbitrária, embora todas as dimensões na forma de entrada deve ser fixo. Utilizar a input_shape argumento palavra-chave (tuplo de números inteiros, não inclui o eixo de amostras) quando se utiliza esta camada como a primeira camada de um modelo.

forma de saída

(batch_size,) + dims

argumentos

dims: Forma de destino. Tuplo de números inteiros, não inclui a dimensão amostras (tamanho do lote).

Respondeu 07/02/2016 em 13:14
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more