Библиотека ml5.js предоставляет удобные средства для работы с машинным обучением в браузере, упрощая интеграцию моделей нейронных сетей на JavaScript. Одной из ключевых задач при работе с обучаемыми моделями является их сохранение и повторное использование. Этот процесс позволяет не тратить время на повторное обучение, делиться моделью или загружать её в других проектах.
ml5.js использует формат TensorFlow.js, что обеспечивает совместимость с инструментами экосистемы TensorFlow. При сохранении модели формируются три файла:
model.json — основная структура модели, описывающая
слои и их связи.weights.bin — бинарные данные весов сети.metadata.json — дополнительные параметры модели (не
всегда создаётся, зависит от типа модели и используемой функции).Сочетание этих файлов позволяет полностью восстановить обученную модель без потери точности.
ml5.js предоставляет разные подходы в зависимости от типа модели:
let classifier;
function trainAndSave() {
classifier = ml5.imageClassifier('MobileNet', modelReady);
function modelReady() {
classifier.train({epochs: 10}, finishedTraining);
}
function finishedTraining() {
classifier.save('myTrainedModel');
}
}
save(name) — сохраняет модель с указанным именем.name-model.json,
name-weights.bin и name-meta.json.Для регрессионных моделей (например, ml5.neuralNetwork)
процесс схож:
const options = {
task: 'regression',
debug: true
};
const nn = ml5.neuralNetwork(options);
nn.addData({x: 0}, {y: 0});
nn.addData({x: 1}, {y: 1});
nn.normalizeData();
nn.train({epochs: 50}, () => {
nn.save('regressionModel');
});
save работает как для классификации, так и для
регрессии.Восстановление модели выполняется с помощью метода
load:
ml5.imageClassifier('myTrainedModel/model.json')
.then(classifier => {
classifier.classify(img, (err, results) => {
console.log(results);
});
});
model.json.ml5.neuralNetwork:const nn = ml5.neuralNetwork({task: 'regression'});
nn.load('regressionModel/model.json', () => {
nn.predict({x: 2}, (err, results) => {
console.log(results);
});
});
save(modelPath) с указанием
URL.TensorFlow.js, что облегчает перенос между проектами.model_v1, model_v2) для удобства разработки и
поддержки.С помощью этих инструментов ml5.js обеспечивает гибкое и удобное сохранение обученных моделей, упрощая повторное использование нейронных сетей в веб-приложениях.