LSTM return_sequences
LSTM의 return_sequences=True는 아웃풋 시퀀스 전체를 다음 layer로 넘긴다. return_sequences=False는 마지막 아웃풋만 다음 layer로 넘긴다. 따라서 더 적은 정보를 담고있기 때문에, accuracy가 떨어진다.
y3 = LSTM(128, return_sequences=True)(y2)
x2 = Dense(64, activation='swish')(y3)
# ValueError: Shapes (None, 60) and (None, 1) are incompatible
y3 = LSTM(128, return_sequences=False)(y2)
x2 = Dense(64, activation='swish')(y3)
return_sequences=True로 지정하고 Dense layer로 넘겨주면 에러가 발생한다.
Flatten()
전체 시퀀스를 Dense layer로 넘겨주고 싶을 때 Flatten()으로 펴서, 차원을 줄여주면 된다. Flatten()은 (n, 60, 128)인 LSTM layer의 아웃풋을 (n, 7680)로 바꿔준다.
y3 = LSTM(128, return_sequences=True)(y2)
y = Flatten()(y3)
x2 = Dense(64, activation='swish')(y)
LSTM + fully connected layer 만들 때
1. return_sequences=False (마지막 아웃풋만 사용해서 accuracy가 떨어질 수 있음)
2. LSTM과 fully connected layer 사이에 Flatten() layer을 추가
'Computer Science > [21-22] ML & DL' 카테고리의 다른 글
[Autoencoder] Denoising Autoencoder란? (0) | 2022.05.02 |
---|---|
[CNN] Conv1D의 causal padding이란 (0) | 2022.04.22 |
[cv] 시계열 데이터 Cross Validation - GroupKFold (0) | 2022.04.16 |
[FE] 시계열 데이터 lag feature 추가하기 (0) | 2022.04.15 |
[LSTM] LSTM unit, cell, layer에 대한 이해 (0) | 2022.04.13 |
댓글