2016-10-30 4 views
13

나는 커리큘럼을 많이 사용하여 여러 keras를 사용하고 있고 행운이없는 여러 LSTM을 스택에 넣으려고합니다. 다음은 내 코드keras에 여러 lstm을 쌓는 방법은 무엇입니까?

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

상기 코드는 셋째 줄 Exception: Input 0 is incompatible with layer lstm_28: expected ndim=3, found ndim=2

입력 X 모양 (100,250,50)의 텐서에 에러를 반환한다. tensorflow 백엔드에서 keras를 실행 중입니다.

+0

귀하의 코드를 입력 괜찮

다음 예제를 참조하십시오. 입력이 2 차원이 아닌 것이 확실합니까? – Ishamael

+0

아니요, X.shape를 통해 확인했습니다. 3D입니다. 첫 번째 측정 기준은 각 교육 샘플을위한 것이고 두 번째는 time_steps이고 세 번째는 50의 벡터 크기입니다. –

답변

31

출력 텐서의 ndim = 3 (즉 배치 크기, 타임 스텝, 숨김 상태)이되도록 첫 번째 레이어에 return_sequences = True를 추가해야합니다. 에서

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

: https://keras.io/getting-started/sequential-model-guide/ ("스택 lstm"검색)

관련 문제