더북(TheBook)

하지만 그림 17-15의 오른쪽인 순환 신경망에서는 그 방식이 조금 다릅니다. 먼저 여기에서는 3일 동안의 확진자 수를 바탕으로 그다음 날의 확진자 수를 예측하기 때문에 입력하는 데이터가 3개입니다. 그리고 은닉층의 뉴런의 수를 3개(a, b, c)로 정해서 실습해 보겠습니다(물론 더 많아도 상관없습니다).

이때 3일 동안의 확진자 데이터를 한 번에 넣어서 학습시키는 것이 아닙니다. 데이터의 순서가 중요하기 때문이죠. 그래서 첫 번째 데이터를 넣고 은닉층에 있는 파라미터들(가중치와 편향의 값)을 학습시킵니다. 그러면 그때의 가중치와 편향의 값이 생기겠죠? 그 학습의 결괏값을 바로 출력하는 것이 아니라 다음 단계에서 참고할 수 있도록 넘겨줍니다.

그 이후 똑같은 은닉층에 첫 번째 데이터를 넣고 학습한 결과와 함께 두 번째 데이터를 넣고 학습시킵니다. 이때는 앞에서 첫 번째 값을 넣었을 때 학습한 결괏값을 포함하여 학습을 시작하고, 그다음 이 결과를 다시 다음 단계로 넘겨줍니다. 이후 이 결괏값과 세 번째 데이터를 넣고 학습시킨 후 최종값을 예측하는 구조입니다.

model = Sequential()
model.add(SimpleRNN(3, input_shape=(1, look_back)))
model.add(Dense(1, activation="linear"))
model.compile(loss='mse', optimizer='adam')
model.summary()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.