TensorFlow.js — это библиотека для работы с машинным обучением непосредственно в браузере или в среде Node.js. Её архитектура построена так, чтобы обеспечить максимальную гибкость при построении, обучении и запуске моделей на JavaScript, сохраняя совместимость с концепциями TensorFlow в Python.
Архитектура TensorFlow.js можно разделить на три ключевых слоя:
Высокоуровневый API (tf.layers)
Этот слой предоставляет удобный интерфейс для создания нейронных сетей,
аналогичный Keras. Он включает в себя:
compile) и обучения
(fit): позволяют задать функцию потерь,
оптимизатор, метрики и управлять процессом обучения.Низкоуровневый API (tf.tensor и операции над
ними) Основу TensorFlow.js составляют тензоры — многомерные
массивы, аналогичные ndarray или numpy.array.
Этот слой включает:
tf.tensor,
tf.tensor1d, tf.tensor2d и т. д.matMul), свёртки, активации, статистические функции.tf.grad, tf.variableGrads):
позволяют вычислять производные функций потерь по параметрам
модели.Среда выполнения (Backend Layer) TensorFlow.js поддерживает несколько backend-движков, отвечающих за вычисления:
Переключение между backend осуществляется через
tf.setBackend('webgl') или
tf.setBackend('cpu'), что обеспечивает переносимость и
оптимизацию под доступные ресурсы.
Тензоры (tf.Tensor) — неизменяемые
структуры данных, представляющие многомерные массивы чисел. Каждый
тензор хранит:
float32, int32 и др.),Переменные (tf.Variable) —
изменяемые тензоры, используемые для хранения параметров модели. Они
могут обновляться в процессе обучения с помощью оптимизаторов.
Пример создания переменной и операции обновления:
const w = tf.variable(tf.tensor([0.5, 1.0]));
const x = tf.tensor([2.0, 3.0]);
const y = w.mul(x);
w.assign(w.sub(y.mul(0.01)));
TensorFlow.js содержит набор встроенных оптимизаторов:
sgd, adam, rmsprop. Каждый
оптимизатор выполняет обновление переменных на основе градиентов и
заданного шага обучения.
Функции потерь (loss functions) включают:
meanSquaredErrorcategoricalCrossentropybinaryCrossentropyПрименение функции потерь в высокоуровневом API выглядит так:
model.compile({
optimizer: 'adam',
loss: 'categoricalCrossentropy',
metrics: ['accuracy']
});
Для эффективной работы с данными TensorFlow.js использует:
tf.data API: потоки данных,
позволяющие создавать батчи, перемешивать и кэшировать данные.tf.tensor() или
tf.tensor2d().TensorFlow.js поддерживает как синхронные, так и асинхронные операции:
tensor.dataSync() возвращает значения тензора
синхронно.tensor.data() возвращает промис для асинхронного
получения данных, что особенно важно при работе с GPU.Для визуализации и отладки моделей существует интеграция с
TensorBoard через tfjs-vis. Это позволяет отслеживать
метрики обучения, визуализировать веса, графики потерь и распределение
активаций.
dispose(), чтобы избежать утечек памяти при интенсивных
вычислениях.@tensorflow/tfjs-core — базовые функции и API для
работы с тензорами.@tensorflow/tfjs-layers — высокоуровневые компоненты
для построения нейронных сетей.@tensorflow/tfjs-data — утилиты для загрузки и
обработки данных.@tensorflow/tfjs-converter — конвертер моделей из
формата TensorFlow SavedModel или Keras для использования в
JavaScript.Эта модульная структура позволяет использовать TensorFlow.js как минимально необходимый набор функций, так и полностью функциональную экосистему для разработки нейросетевых приложений в браузере и на сервере.