Библиотека ml5.js предоставляет удобный интерфейс для работы с моделями машинного обучения в JavaScript, упрощая взаимодействие с TensorFlow.js. Одной из ключевых возможностей является сохранение обученных или дообученных моделей на локальной машине пользователя. Это позволяет использовать модели повторно, обмениваться ими или интегрировать в веб-приложения без повторного обучения.
ml5.js использует для хранения моделей формат TensorFlow.js, который включает два основных компонента:
model.json) —
содержит структуру нейронной сети, конфигурацию слоёв, веса по умолчанию
и ссылки на бинарные файлы весов.*.bin) — содержат
обученные параметры модели. Эти файлы могут быть разделены на несколько
частей в зависимости от размера модели.При сохранении модели в файловую систему браузера создаются эти два типа файлов, которые могут быть загружены для дальнейшего использования.
save() для
моделейВ ml5.js почти каждая модель, поддерживающая обучение, предоставляет
метод save(), позволяющий сохранить её
локально. Синтаксис:
model.save([fileName]);
fileName (необязательный) — строка с
именем файла. Если не указать, будет использовано стандартное имя,
например model.Пример для классификатора изображений с использованием
ml5.imageClassifier:
let classifier;
function setup() {
createCanvas(400, 400);
classifier = ml5.imageClassifier('MobileNet', modelReady);
}
function modelReady() {
console.log('Модель загружена и готова к использованию');
}
function saveModel() {
classifier.save('myImageClassifier');
}
После вызова classifier.save('myImageClassifier') в
браузере появится диалог сохранения, и будут загружены файлы
myImageClassifier.json и соответствующие файлы весов
.bin.
Если модель была дообучена на пользовательских данных (transfer
learning), важно сохранять именно обновлённые веса,
иначе при повторном использовании будут применяться исходные значения
модели. Например, с ml5.neuralNetwork:
const options = {
task: 'classification',
debug: true
};
const nn = ml5.neuralNetwork(options);
function trainModel() {
nn.addData({input: [0.1, 0.2]}, {output: [1]});
nn.addData({input: [0.2, 0.3]}, {output: [0]});
nn.normalizeData();
nn.train({epochs: 50}, finishedTraining);
}
function finishedTraining() {
console.log('Обучение завершено');
nn.save('trainedNN');
}
В результате сохранения создаются файлы trainedNN.json и
соответствующие .bin, отражающие обученные веса
нейросети.
save()
инициирует скачивание, которое работает через стандартный механизм
браузера Blob и a.href. Файлы сохраняются в
папку загрузок или по пути, выбранному пользователем.tf.loadLayersModel().Для последующего использования сохранённой модели применяется метод
ml5.loadXXX. Например, для нейросети:
ml5.neuralNetwork({task: 'classification'})
.load('trainedNN/model.json', loaded);
function loaded(err, model) {
if (err) {
console.error('Ошибка загрузки модели:', err);
return;
}
console.log('Модель успешно загружена');
}
Здесь trainedNN/model.json — путь к локальному файлу,
либо URL к удалённому хранилищу. После загрузки модель готова к
предсказаниям и дообучению.
ml5.loadModel().Сохранение классификатора текста:
const charRNN = ml5.charRNN('models/shakespeare/', modelReady);
function modelReady() {
console.log('CharRNN готов к генерации текста');
}
function saveCharRNN() {
charRNN.save('myShakespeareModel');
}
Сохранение модели GAN после обучения на кастомных данных:
const gan = ml5.GAN('models/ganModel', ganReady);
function ganReady() {
console.log('GAN модель готова');
}
// После обучения GAN
gan.save('customGANModel');
Эти методы обеспечивают долговременное хранение моделей и позволяют повторно использовать обученные данные без необходимости повторного обучения.