• 훈련 데이터: 경사 하강법으로 모델 가중치를 학습합니다.
▪ TensorFlow.js에서의 사용법: 일반적으로 훈련 데이터는 Model.fit(x, y, config)를 호출할 때 주요 매개변수 값(x와 y)으로 사용됩니다.
• 검증 데이터: 모델 구조와 하이퍼파라미터를 선택합니다.
▪ TensorFlow.js에서의 사용법: Model.fit() 메서드의 config 매개변수에 검증 데이터를 지정하는 두 가지 방법이 있습니다. 검증 데이터를 별도로 가지고 있다면 config.validationData에 지정합니다. 프레임워크가 훈련 데이터의 일부를 떼어내어 검증 데이터로 사용하게 하려면 config.validationSplit에 분할 비율을 지정합니다. 프레임워크는 검증 데이터를 사용하여 모델을 훈련하지 않습니다. 따라서 데이터가 겹치지 않습니다.
• 테스트 데이터: 편향되지 않은 모델의 최종 성능을 추정합니다.
▪ TensorFlow.js에서의 사용법: 평가 데이터는 Model.evaluate(x, y, config)의 x와 y 매개변수 값으로 전달합니다.
코드 2-14에서 훈련 손실과 함께 검증 손실이 계산됩니다. validationSplit: 0.2는 model.fit() 메서드가 훈련 데이터의 마지막 20%를 선택해 검증 데이터로 사용하라는 의미입니다. 이 데이터는 훈련에 사용되지 않습니다(즉, 경사 하강법에 영향을 미치지 않습니다).
코드 2-14 model.fit()에 검증 데이터 적용하기
let trainLogs = [];
await model.fit(tensors.trainFeatures, tensors.trainTarget, {
batchSize: BATCH_SIZE,
epochs: NUM_EPOCHS,
validationSplit: 0.2,
callbacks: {
onEpochEnd: async (epoch, logs) => {
await ui.updateModelStatus(
'에포크 ${NUM_EPOCHS}번 중 ${epoch + 1}번째 완료.', modelName);
trainLogs.push(logs);
tfvis.show.history(container, trainLogs, ['loss', 'val_loss'],
{'xLabel':'반복(에포크)','yLabel':'손실'})
}
}
});