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로 해줘야한다.