더북(TheBook)

Sequential() 함수와 Dense() 함수는 2장에서 이미 소개한 바 있습니다. 이 함수를 불러와 선형 회귀를 실행하는 코드는 다음과 같습니다.

model.add(Dense(1, input_dim=1, activation='linear')) ----- ➊
model.compile(optimizer='sgd', loss='mse') -----  ➋
model.fit(x, y, epochs=2000) ----- ➌

단 세 줄의 코드에 앞서 공부한 모든 것이 담겨 있습니다. 어떻게 설정하는지 살펴보겠습니다.

먼저 가설 함수는 H(x) = wx + b입니다. 이때 출력되는 값(=성적)이 하나씩이므로 Dense() 함수의 첫 번째 인자에 1이라고 설정합니다. 입력될 변수(=학습 시간)도 하나뿐이므로 input_dim 역시 1이라고 설정합니다. 입력된 값을 다음 층으로 넘길 때 각 값을 어떻게 처리할지를 결정하는 함수를 활성화 함수라고 합니다. activation은 활성화 함수를 정하는 옵션입니다. 여기에서는 선형 회귀를 다루고 있으므로 'linear'라고 적어 주면 됩니다. 딥러닝 목적에 따라 다른 활성화 함수를 넣을 수 있는데, 예를 들어 다음 절에서 배울 시그모이드 함수가 필요하다면 ‘sigmoid’라고 넣어 주는 식입니다. 딥러닝에서 사용하는 여러 가지 활성화 함수에 대해서는 9장에서 상세히 배웁니다. 앞서 배운 경사 하강법을 실행하려면 옵티마이저에 sgd라고 설정합니다. 손실 함수는 평균 제곱 오차를 사용할 것이므로 mse라고 설정합니다. 끝으로 앞서 따로 적어 주었던 epochs 숫자를 model.fit() 함수에 적습니다.

학습 시간(x)이 입력되었을 때의 예측 점수는 model.predict(x)로 알 수 있습니다. 예측 점수로 그래프를 그려 보면 다음과 같습니다.

plt.scatter(x, y)
plt.plot(x, model.predict(x), 'r')    # 예측 결과를 그래프로 나타냅니다.
plt.show()

이제 모든 코드를 모아 보면 다음과 같습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.