4.2.5 합성곱 신경망 훈련하기
합성곱 신경망을 성공적으로 정의했으므로 다음 단계는 모델을 훈련하고 훈련 결과를 평가하는 것입니다. 다음 코드에서 이런 작업을 수행합니다.
코드 4-2 MNIST 합성곱 신경망 훈련하고 평가하기
const optimizer = 'rmsprop';
model.compile({
optimizer,
loss: 'categoricalCrossentropy',
metrics: ['accuracy']
});
const batchSize = 320;
const validationSplit = 0.15;
await model.fit(trainData.xs, trainData.labels, {
batchSize: batchSize,
validationSplit: validationSplit,
epochs: trainEpochs,
callbacks: {
onBatchEnd: async (batch, logs) => { ------ 콜백을 사용하여 훈련하는 동안 정확도와 손실을 그래프로 그립니다.
trainBatchCount++;
ui.logStatus(
'훈련... (' +
'${(trainBatchCount / totalNumBatches * 100).toFixed(1)}%' +
' 완료). 훈련을 멈추려면 페이지를 새로 고침하거나 종료하세요.');
ui.plotLoss(trainBatchCount, logs.loss, 'train');
ui.plotAccuracy(trainBatchCount, logs.acc, 'train');
},
onEpochEnd: async (epoch, logs) => {
valAcc = logs.val_acc;
ui.plotLoss(trainBatchCount, logs.val_loss, 'validation');
ui.plotAccuracy(trainBatchCount, logs.val_acc, 'validation');
}
}
});
const testResult = model.evaluate(
testData.xs, testData.labels); ------ 모델이 본 적 없는 데이터를 사용해 모델의 정확도를 평가합니다.