그림 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);
}
}
});