TensorFlow.js предоставляет мощный инструмент для
визуализации данных и моделей — библиотеку tfjs-vis. Она
облегчает анализ работы нейронных сетей, отображение графиков потерь,
точности и структуры модели прямо в браузере. Для использования
библиотеки в проекте существуют два основных способа подключения:
1. Через CDN
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis"></script>
Этот метод подходит для быстрого прототипирования и демонстраций, так как не требует установки npm-пакетов.
2. Через npm
npm install @tensorflow/tfjs @tensorflow/tfjs-vis
В коде JavaScript подключение выглядит так:
import * as tf from '@tensorflow/tfjs';
import * as tfvis from '@tensorflow/tfjs-vis';
Использование npm обеспечивает более строгий контроль версий и позволяет интегрировать библиотеку в современные фронтенд-проекты.
tfjs-vis предоставляет несколько категорий инструментов
для визуализации:
render.linechart,
render.scatterplot) – для отображения данных,
метрик обучения, предсказаний модели.render.table) – для
представления исходных данных или результатов модели в табличном
виде.render.values,
render.history) – для отслеживания динамики
метрик, таких как loss и accuracy.show.modelSummary,
show.layer) – для визуального анализа структуры
сети, количества параметров, размеров тензоров.render.image, render.canvas) – для
работы с изображениями и визуализации тензоров в виде пиксельной
сетки.Для начала работы с данными используется метод
tfvis.render.scatterplot или
tfvis.render.linechart. Пример построения графика
функции:
const data = Array.from({length: 100}, (_, i) => ({
x: i / 10,
y: Math.sin(i / 10)
}));
tfvis.render.scatterplot(
{name: 'График синусоиды'},
{values: data},
{
xLabel: 'x',
yLabel: 'y',
height: 300
}
);
Ключевые параметры:
name — заголовок графика.values — массив объектов {x, y} или
объектов с series.xLabel, yLabel, height,
width позволяют настроить визуальное представление.Для мониторинга процесса обучения моделей используется функция
tfvis.show.fitCallbacks, которая создает удобные панели с
графиками потерь и точности.
const model = tf.sequential();
model.add(tf.layers.dense({units: 10, activation: 'relu', inputShape: [2]}));
model.add(tf.layers.dense({units: 1}));
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
const data = {
xs: tf.tensor2d([[0,0],[0,1],[1,0],[1,1]]),
ys: tf.tensor2d([[0],[1],[1],[0]])
};
await model.fit(data.xs, data.ys, {
epochs: 50,
callbacks: tfvis.show.fitCallbacks(
{name: 'Обучение XOR модели'},
['loss', 'acc'],
{height: 300, callbacks: ['onEpochEnd']}
)
});
Особенности fitCallbacks:
callbacks принимает массив событий, таких как
onEpochEnd или onBatchEnd, для гибкого
контроля визуализации.tfjs-vis позволяет визуализировать архитектуру нейронной
сети, включая количество слоев, параметры и формы тензоров.
tfvis.show.modelSummary({name: 'Структура модели'}, model);
Дополнительно можно анализировать отдельные слои:
tfvis.show.layer({name: 'Первый слой'}, model.layers[0]);
Преимущества:
Для работы с изображениями используется метод
tfvis.render.image. Например, отображение массива
тензоров:
const imageTensor = tf.randomUniform([28, 28, 1]);
tfvis.render.image({name: 'Случайное изображение'}, imageTensor, {width: 200, height: 200});
Особенности:
Все графики и панели создаются в DOM-элементах, которые можно настраивать:
container — указывает конкретный HTML-элемент для
рендера.width и height — задают размеры
визуализации.seriesColors — позволяет задать цвета для разных серий
данных.xLabel и yLabel — подписи осей для
наглядности.Пример кастомного контейнера:
const container = {name: 'Кастомный график', tab: 'Данные', styles: {width: '500px', height: '400px'}};
tfvis.render.linechart(container, {values: data}, {xLabel: 'Время', yLabel: 'Значение'});
Использование tab позволяет организовывать панели по
вкладкам, создавая аккуратный интерфейс для большого числа графиков.
Для визуального анализа данных и предсказаний удобно использовать
tfvis.render.table:
const tableData = [
{input: [0,0], output: 0},
{input: [0,1], output: 1},
{input: [1,0], output: 1},
{input: [1,1], output: 0}
];
tfvis.render.table({name: 'Данные XOR'}, {headers: ['input', 'output'], values: tableData});
Особенности:
series), чтобы не перегружать браузер.tfjs-vis является мощным инструментом для анализа
нейронных сетей в браузере, сочетая гибкость графиков, таблиц и
визуализации слоев с простым и понятным API.