2016-10-30 32 views
13

Używam bibliotek do nauki głębokiego uczenia się i próbuję układać wiele LSTM bez powodzenia. Poniżej jest mój kodJak układać wiele kart lstm w kamerze?

model = Sequential() 
model.add(LSTM(100,input_shape =(time_steps,vector_size))) 
model.add(LSTM(100)) 

Powyższy kod zwraca błąd w trzeciej linii Exception: Input 0 is incompatible with layer lstm_28: expected ndim=3, found ndim=2

Wejście X jest tensor kształtu (100,250,50). Używam kerasów na backend tensorflow

+0

Twój kod i wejścia są w porządku. Jesteś pewien, że dane wejściowe nie są dwuwymiarowe? – Ishamael

+0

Nie, sprawdziłem przez X.shape, To jest 3D, 1. wymiar jest dla każdej próbki treningowej, sekunda jest dla time_steps, a trzeci to wielkość wektora 50 –

Odpowiedz

31

Musisz dodać return_sequences = True do pierwszej warstwy, aby jego tensor wyjściowy miał wartość ndim = 3 (tj. Rozmiar partii, timesteps, stan ukryty).

Proszę patrz poniższy przykład:

# expected input data shape: (batch_size, timesteps, data_dim) 
model = Sequential() 
model.add(LSTM(32, return_sequences=True, 
       input_shape=(timesteps, data_dim))) # returns a sequence of vectors of dimension 32 
model.add(LSTM(32, return_sequences=True)) # returns a sequence of vectors of dimension 32 
model.add(LSTM(32)) # return a single vector of dimension 32 
model.add(Dense(10, activation='softmax')) 

Od: https://keras.io/getting-started/sequential-model-guide/ (szukaj "ułożone LSTM")