더북(TheBook)

2.3.6 보스턴 주택 데이터에서 선형 회귀 훈련하기

데이터를 정규화하고 합리적인 기준을 마련했습니다. 다음 단계는 모델을 구축하고 훈련하여 이 기준을 능가하는지 확인하는 것입니다. 코드 2-10에서 2.1절에 있는 것과 비슷한 선형 회귀 모델을 정의합니다(이 코드는 index.js에 있습니다). 코드가 아주 비슷합니다. 다운로드 시간 예측 모델과 유일하게 다른 점은 inputShape 설정입니다. 1이 아니라 길이가 12인 벡터를 받습니다. 하나의 밀집 층은 동일하게 units: 1이므로 하나의 숫자를 출력합니다.

 

코드 2-10 보스턴 주택 데이터를 위한 선형 회귀 모델 정의

export function linearRegressionModel() {
  const model = tf.sequential();
  model.add(tf.layers.dense({inputShape: [bostonData.numFeatures], units: 1}));
  return model;
};

모델을 정의하고 난 다음, 훈련을 시작하기 전에 model.compile() 메서드를 호출할 때 손실과 옵티마이저를 지정해야 합니다. 코드 2-11에서 'meanSquaredError' 손실과 학습률을 별도로 설정한 옵티마이저를 지정합니다. 이전 예제에서 옵티마이저 매개변수를 'sgd' 문자열로 지정했지만, 여기서는 tf.train.sgd(LEARNING_RATE)입니다. 이 팩토리(factory) 함수는 확률적 경사 하강법 옵티마이저 알고리즘을 구현한 객체를 반환합니다.23 하지만 별도의 학습률을 사용합니다. 이것이 케라스에서 내려온 TensorFlow.js에서 사용하는 일반적인 패턴입니다. 다른 설정 옵션에도 이런 방식을 적용할 수 있습니다. 표준적으로 잘 알려진 기본 매개변수 값을 적용하기 위해 문자열을 객체 타입으로 대체할 수 있습니다. TensorFlow.js는 입력된 문자열을 좋은 기본 매개변수 값을 적용한 객체로 바꿉니다. 이 경우 'sgd'tf.train.sgd(0.01)로 바뀝니다. 옵션을 바꾸어야 할 필요가 있다면 이 팩토리 함수에 원하는 값을 전달하여 객체를 만들 수 있습니다. 이렇게 하면 대부분의 경우 코드를 간결하게 유지하고 필요할 때 기본 매개변수 값을 오버라이드(override)할 수 있습니다.

 

코드 2-11 보스턴 주택 모델 컴파일(index.js)

const LEARNING_RATE = 0.01;
model.compile({
  optimizer: tf.train.sgd(LEARNING_RATE),
  loss: 'meanSquaredError'});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.