TensorFlow.js предоставляет мощные возможности для работы с моделями машинного обучения прямо в браузере или на сервере с Node.js. Одной из ключевых задач является сохранение и восстановление обученных моделей для последующего использования без необходимости повторного обучения. Модель в TensorFlow.js состоит из двух основных компонентов:
Для оптимального управления этими компонентами используется формат JSON + бинарные веса.
Архитектура модели сохраняется в виде JSON-объекта. Основные элементы структуры:
modelTopology — описание слоев и их параметров.
Включает информацию о типах слоев, их конфигурации и порядке
соединений.trainingConfig — параметры обучения модели, если
сохранение происходит после обучения (optimizer,
loss, metrics).weightsManifest — описание файлов с бинарными весами,
их размеры и типы данных.Пример структуры JSON:
{
"modelTopology": {
"class_name": "Sequential",
"config": {
"layers": [
{
"class_name": "Dense",
"config": {
"units": 128,
"activation": "relu",
"inputShape": [784]
}
},
{
"class_name": "Dense",
"config": {
"units": 10,
"activation": "softmax"
}
}
]
}
},
"weightsManifest": [
{
"paths": ["weights.bin"],
"weights": [
{
"name": "dense/kernel",
"shape": [784, 128],
"dtype": "float32"
},
{
"name": "dense/bias",
"shape": [128],
"dtype": "float32"
}
]
}
]
}
Ключевые моменты:
Веса модели сохраняются отдельно в бинарном формате, что обеспечивает компактность и быструю загрузку. Основные характеристики:
Float32
или Int32.Преимущества бинарного формата:
TensorFlow.js предоставляет встроенные методы для сохранения моделей с разделением на JSON и бинарные веса:
// Сохранение модели в файловую систему (Node.js)
await model.save('file://./my-model');
// Сохранение модели в браузере через IndexedDB
await model.save('indexeddb://my-model');
// Сохранение модели через HTTP POST (сервера или облако)
await model.save('http://example.com/upload-model');
Особенности:
model.save() автоматически формирует JSON-файл для
архитектуры и отдельный бинарный файл для весов.localstorage или
indexeddb для хранения модели между сессиями.Восстановление модели из формата JSON + бинарные веса выполняется с
помощью метода tf.loadLayersModel:
// Загрузка модели из файловой системы (Node.js)
const model = await tf.loadLayersModel('file://./my-model/model.json');
// Загрузка модели из IndexedDB (браузер)
const model = await tf.loadLayersModel('indexeddb://my-model');
// Загрузка модели с удалённого сервера
const model = await tf.loadLayersModel('https://example.com/my-model/model.json');
При загрузке:
float32; несоответствие типов может вызвать
ошибки при загрузке.Модели, обученные в Python TensorFlow, могут быть конвертированы в
TensorFlow.js формат (JSON + бинарные веса) с помощью
утилиты tensorflowjs_converter. Это обеспечивает:
Система сохранения JSON + бинарные веса в TensorFlow.js предоставляет надежный, гибкий и высокопроизводительный способ управления моделями, позволяя эффективно работать как с небольшими экспериментальными сетями, так и с крупными продвинутыми нейросетями.