Библиотека ml5.js предоставляет высокоуровневый интерфейс для работы с машинным обучением в браузере, построенный поверх TensorFlow.js. Одним из ключевых аспектов работы с моделями является возможность их сохранения и последующего повторного использования. В ml5.js поддерживаются несколько форматов сохранения моделей, каждый из которых имеет свои особенности и области применения.
В ml5.js можно работать с различными типами моделей:
Нейронные сети для классификации и регрессии
ml5.neuralNetwork().Модели для обработки изображений
ml5.imageClassifier().Модели для обработки звука и текста
ml5.soundClassifier() и ml5.word2vec()
соответственно.Каждая модель в конечном итоге сводится к объекту TensorFlow.js, поэтому форматы сохранения напрямую связаны с его механизмами.
JSON + bin
(TensorFlow.js)Наиболее распространённый способ сохранения модели в ml5.js:
.bin) — содержат веса
нейронной сети в бинарном формате для быстрого загрузки.Пример сохранения нейронной сети:
const nn = ml5.neuralNetwork({ task: 'classification' });
// После обучения модели
nn.save('myModel');
Результатом будет генерация файлов:
myModel.json — структура сети и конфигурация.myModel.weights.bin — бинарные веса модели.Особенности:
Для моделей, загружаемых через ml5.,
например ml5.imageClassifier('MobileNet'), доступна функция
сохранения локальной копии, чтобы уменьшить зависимость
от сети:
classifier.save('mobilenet-local');
Преимущества:
Важный момент: сохраняется не весь исходный код модели, а только параметры, веса и конфигурация слоев. Предобученная архитектура при этом остаётся совместимой с ml5.js и TensorFlow.js.
Модели обработки текста и слов, например ml5.word2vec,
используют JSON с массивами весов, где:
Сохранение производится так:
word2vec.save('wordVectors');
В результате формируется один JSON-файл, содержащий и словарь, и веса, что удобно для последующей загрузки.
Загрузка модели обратно в проект выполняется через соответствующий
метод load:
ml5.neuralNetwork('myModel.json', modelLoaded);
function modelLoaded() {
console.log('Модель успешно загружена');
}
Ключевые моменты:
.bin) должны находиться в том же
каталоге.imageClassifier_v1.json, weights_v1.bin) для
облегчения версионирования.