더북(TheBook)

그림 3-6에 있는 일곱 개의 ROC 곡선은 첫 번째 에포크(에포크 001)에서 마지막(에포크 400)까지 일곱 개의 다른 훈련 에포크의 시작점에서 만들었습니다. 각 곡선은 (훈련 데이터가 아니라) 테스트 데이터에 대한 모델의 예측을 기반으로 만들었습니다. 코드 3-6은 Model.fit() API의 onEpochBegin 콜백(callback)에서 이 그래프를 어떻게 만드는지 자세히 보여 줍니다. 이 방법을 사용하면 for 반복문을 사용하거나 여러 번 Model.fit() 메서드를 호출하지 않고 훈련 중간에 모델을 분석하고 시각화할 수 있습니다.

 

코드 3-6 콜백을 사용해 모델 훈련 중간에 ROC 곡선을 그리기

await model.fit(trainData.data, trainData.target, {
  batchSize: batchSize,
  epochs: epochs,
  validationSplit: 0.2,
  callbacks: {
  onEpochBegin: async (epoch) => {
    if ((epoch + 1)% 100 === 0 || epoch === 0 || epoch === 2 || epoch === 4) { ------ 몇 번의 에포크마다 ROC 곡선을 그립니다. 
        const probs = model.predict(testData.data);
        drawROC(testData.target, probs, epoch);
    }
  },
    onEpochEnd: async (epoch, logs) => {
      await ui.updateStatus(
            '총 에포크: ${epochs}, 완료 에포크: ${epoch + 1}');
      trainLogs.push(logs);
      ui.plotLosses(trainLogs);
      ui.plotAccuracies(trainLogs);
    }
  }
});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.