시계열수치입력 수치예측 모델을 만드는 것이 목표입니다.
구현 방법 :
- 다층퍼셉트론 모델 : Dense 레이어가 4개인 다층퍼셉트론 모델입니다. 은닉층에 사용된 Dense 레이어는 32개의 뉴런을 가지고 있고, relu 활성화 함수를 사용합니다. 출력층의 Dense 레이어는 하나의 수치값을 예측을 하기 위해서 1개의 뉴런을 가지며, 별도의 활성화 함수를 사용하지 않습니다. 과적합을 방지하기 위해 Dropout 레이어를 삽입합니다.
model = Sequential()
model.add(Dense(32,input_dim=40,activation="relu"))
model.add(Dropout(0.3))
for i in range(2):
model.add(Dense(32,activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(1))
2. 순환신경망 모델 : 한 개의 LSTM 레이어를 이용하여 순환신경망 모델을 구성합니다. 출력층은 하나의 수치값을 예측하기 위해 1개의 뉴런을 가진 Dense 레이어를 사용합니다.
model = Sequential()
model.add(LSTM(32, input_shape=(None, 1)))
model.add(Dropout(0.3))
model.add(Dense(1))
3. 상태유지 순환신경망 모델 : 순환신경망 모델과 동일하나 ‘stateful=True’ 옵션을 사용하여 상태유지 가능한 순환신경망 모델을 구성힙니다. 상태유지 모드일경우 한 배치에서 학습된 상태가 다음 배치 학습시에 전달되는 방식입니다.
model = Sequential()
model.add(LSTM(32, batch_input_shape=(1, look_back, 1), stateful=True))
model.add(Dropout(0.3))
model.add(Dense(1))
4. 상태유지 스택 순환신경망 모델 : 상태유지 순환신경망을 여러겹 쌓아올린 모델입니다. 층이 하나인 순환신경망에 비해 더 깊은 추론이 가능한 모델입니다.
model = Sequential()
for i in range(2):
model.add(LSTM(32, batch_input_shape=(1, look_back, 1), stateful=True, return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(32, batch_input_shape=(1, look_back, 1), stateful=True))
model.add(Dropout(0.3))
model.add(Dense(1))