Time Series

LSTM layer return_sequences 파라미터 True, False 차이

코딩초보ran 2023. 4. 19. 16:30

LSTM layer 파라미터에 return_sequences 가 있는데 얘는 True, False로 설정할 수 있음.

True와 False의 차이는 무엇일까?! 검색을 통해서 봤는데 아직 정확하게 모르겠음

모델 구조에서 차이를 확인해보자!

 

  • return_sequences = False 일 때.
model.add(keras.layers.Conv1D(filters=3, 
                              kernel_size=4,
                              padding='same',
                              activation='relu',
                              strides=1))
model.add(MaxPooling1D(pool_size=4))
model.add(keras.layers.LSTM(units=sequence_x, return_sequences=False))
model.add(keras.layers.Dense(units=sequence_y, activation='relu'))

 

  • return_sequences = True 일 때
model = keras.Sequential()
model.add(keras.layers.Conv1D(filters=3, 
                              kernel_size=4,
                              padding='same',
                              activation='relu',
                              strides=1))
model.add(MaxPooling1D(pool_size=4))
model.add(keras.layers.LSTM(units=sequence_x, return_sequences=True))
model.add(keras.layers.Dense(units=sequence_y, activation='relu'))


마지막 dense layer의 output shape이 다르다.

return_sequences=False 일 때는 Output Shape이 (None, 1) 인데, 

return_sequences=True일 때는 Output Shape이 (None, 8,1) 이다.

가운데 8은 어디서 오는 거지? MaxPooling1D layer를 거쳐서 저렇게 된 건데, pool_size = 4 가 영향이 있는 것 같다.

그래서 결론은, return_sequences=True이면,  예측결과값 하나에 8개의 예측결과를 가지고 있는 것.

Q. 그럼 이럴 땐 실제 vs 예측 그래프는 어떻게 그리면 될까?

Q. 저 8개의 예측값은 뭘 의미하는 걸까??

-> 이 궁금증을 해결하기 위해서는 return_sequences 의 의미를 정확하게 알아야할듯 ! 더 공부해보자.


그래서 결과값 하나만 뽑을 때는 Dense layer 전에 있는 lstm이나 gru layer에서는 return_sequences를 False로 해줘야한다.