2

입력 한 시계열 데이터의 모양이 nb_samples, 75, 32입니다.
75는 시간 단계이고 32는 입력 차원입니다.Keras LSTM 다차원 입력

model = Sequential() 
model.add(LSTM(4, input_shape=(75, 32))) 
model.summary() 

LSTM 웨이트 벡터는, 모두 32 [W_i, W_c, W_f, W_o] 치수이지만, 출력은 하나의 값이다. 상기 모델의 출력 형상은 (1,4)이다. 그러나 LSTM에서 출력은 벡터이기 때문에 위와 같이 다 대일 구현에서는 (32,4)해서는 안됩니까? 왜 다중 차원 입력에 대해 단일 값을 제공합니까?

+0

이 벡터의 치수가 32 점입니까? 그것은 사실이 아닙니다. –

답변

1

는 형상 (nb_sample, timestep, input_dim)의 입력을위한 Keras doc for reccurent layers

읽을 수있는 바와 같이, 두 개의 가능한 출력을 가지고하면 (이는이 경우에는 없음)하여 LSTM에 return_sequence=True 설정하면

  • 을 숨겨진 모든 상태를 반환하므로 LSTM이 시퀀스를 '읽는'중간 단계가됩니다. 모양이 (nb_sample, timestep, output_dim) 인 출력을 얻습니다.

  • return_sequence=False (기본값)으로 설정하면 마지막 상태 만 출력됩니다. 따라서 모양은 (nb_sample, output_dim)입니다.

그래서 당신은이처럼 LSTM 층을 정의하는 경우 :

model.add(LSTM(4, return_sequence=True, input_shape=(75, 32))) 

당신이 모양 (None, 75, 4)의 출력을해야합니다. 시간 차원이 32 인 경우 LSTM에 데이터를 공급하기 전에 데이터를 조 변경해야합니다. 첫 번째 차원은 시간적 차원입니다.

도움이 되길 바랍니다.