더북(TheBook)

이제 모델을 훈련 데이터셋에서 훈련할 수 있습니다. 코드 2-12에서 2-14까지 model.fit() 메서드의 다양한 기능을 사용합니다. 하지만 기본적으로 그림 2-6과 동일한 작업을 수행합니다. 각 단계에서 새로운 샘플 특성(tensors.trainFeatures)과 타깃(tensors.trainTarget)을 여러 개 선택하고, 손실을 계산하고, 이 손실을 줄이기 위해 가중치를 업데이트합니다. 이 과정은 전체 훈련 데이터에 대해 NUM_EPOCHS 동안 반복되며 에포크 안의 각 단계마다 BATCH_SIZE개의 샘플을 선택합니다.

 

코드 2-12 보스턴 주택 데이터에서 모델 훈련하기

await model.fit(tensors.trainFeatures, tensors.trainTarget, {
  batchSize: BATCH_SIZE
  epochs: NUM_EPOCHS,
});

보스턴 주택 웹 애플리케이션에서 모델이 훈련될 때 훈련 손실의 그래프를 그리겠습니다. 이를 위해 model.fit()의 콜백(callback) 기능을 사용해 UI를 업데이트합니다. model.fit() 콜백 API를 사용하면 특정 이벤트에 실행시킬 콜백 함수를 제공할 수 있습니다. 3.8.0 버전의 전체 콜백 트리거(trigger)onTrainBegin, onTrainEnd, onEpochBegin, onEpochEnd, onBatchBegin, onBatchEnd, onYield입니다.

 

코드 2-13 model.fit()의 콜백

let trainLogs = [];
await model.fit(tensors.trainFeatures, tensors.trainTarget, {
  batchSize: BATCH_SIZE,
  epochs: NUM_EPOCHS,
  callbacks: {
    onEpochEnd: async (epoch, logs) => {
      await ui.updateModelStatus(
          '에포크 ${NUM_EPOCHS}번 중 ${epoch + 1}번째 완료.', modelName);
      trainLogs.push(logs);
      tfvis.show.history(container, trainLogs, ['loss'],
          {'xLabel':'반복(에포크)','yLabel':'손실'})
    }
  }
});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.