ConvNetJS — это чисто JavaScript библиотека для построения, обучения и оценки нейронных сетей, включая сверточные сети. Оценка точности модели является ключевым этапом в процессе разработки, поскольку позволяет количественно измерить способность сети корректно предсказывать классы на новых данных.
В ConvNetJS основной метрикой оценки является accuracy — доля правильно классифицированных примеров. Для задачи классификации с (N) примерами и (C) классами точность вычисляется как:
[ = .]
Кроме точности, для углубленного анализа можно использовать:
Важный аспект — правильная подготовка тестового набора:
Пример создания тестового набора:
var testData = [];
for (var i = 0; i < dataset.length; i++) {
if (i % 5 === 0) { // каждый 5-й пример для теста
testData.push(dataset[i]);
}
}
ConvNetJS предоставляет объект Trainer, который не
только обучает, но и позволяет отслеживать метрики на тестовом
наборе.
Пример вычисления точности:
var correct = 0;
for (var i = 0; i < testData.length; i++) {
var x = testData[i].x;
var y = testData[i].y;
var predicted = net.forward(x);
if (predicted.w.indexOf(Math.max(...predicted.w)) === y) {
correct += 1;
}
}
var accuracy = correct / testData.length;
console.log("Accuracy:", accuracy);
Пояснения к коду:
net.forward(x) возвращает объект Vol,
содержащий предсказанные вероятности для каждого класса.Math.max(...predicted.w) позволяет
определить класс с максимальной вероятностью.y позволяет подсчитать
количество правильных предсказаний.Для анализа поведения модели во время обучения удобно строить графики loss и accuracy по эпохам:
var stats = trainer.train(xBatch, yBatch);
lossHistory.push(stats.loss);
accuracyHistory.push(evaluateAccuracy(net, testData));
Графики позволяют выявить:
for (var i = 0; i < testData.length; i += batchSize) {
var batch = testData.slice(i, i + batchSize);
batch.forEach(d => {
var pred = net.forward(d.x);
// подсчет правильных предсказаний
});
}
В ConvNetJS для этих метрик приходится самостоятельно реализовывать вычисления на основе выходов сети и истинных меток, что позволяет гибко настраивать оценку под конкретную задачу.
Тщательная оценка точности в ConvNetJS позволяет не только измерять текущие результаты сети, но и формировать стратегии дальнейшей оптимизации архитектуры и гиперпараметров.