Mind.js — это библиотека для создания интерактивных нейронных сетей и визуализации их работы в браузере. Она сочетает возможности моделирования искусственных нейронных сетей и средств визуализации, предоставляя разработчику гибкие инструменты для построения адаптивных интерфейсов.
Ключевое свойство Mind.js — адаптивность визуализации, которая позволяет автоматически подстраивать графические элементы сети под данные и размеры контейнера. Это особенно важно для динамических интерфейсов и приложений с изменяющейся структурой данных.
Для работы с библиотекой создаётся объект сети через конструктор
Mind.Network. Простейшая инициализация выглядит следующим
образом:
const network = new Mind.Network({
container: document.getElementById('mind-container'),
width: 800,
height: 600,
theme: 'light'
});
Параметры конфигурации:
container — HTML-элемент, в котором будет отображаться
сеть.width и height — размеры визуальной
области.theme — визуальная тема (light или
dark).После инициализации создаётся пустая сетка, готовая
для добавления узлов (Node) и связей
(Edge).
Узел — это основной строительный блок сети. Он может содержать данные, метки и поведение. Создание узла:
const nodeA = new Mind.Node({
id: 'A',
label: 'Вход',
data: { value: 0.5 }
});
network.addNode(nodeA);
Ключевые свойства узлов:
id — уникальный идентификатор.label — текстовая метка для визуального
отображения.data — произвольные данные, которые могут
использоваться для вычислений или обучения.Связь между узлами создаётся объектом Edge:
const edgeAB = new Mind.Edge({
from: 'A',
to: 'B',
weight: 0.8
});
network.addEdge(edgeAB);
Свойства связи:
from и to — идентификаторы узлов.weight — вес связи, влияющий на вычисления сети.Главная особенность Mind.js — автоматическая подстройка узлов и связей под изменения данных и размеров контейнера. Адаптивная визуализация реализуется через две основные функции:
autoLayout) —
пересчитывает позиции узлов при изменении структуры сети или размеров
контейнера. Пример:network.autoLayout({
method: 'force', // алгоритм силового распределения
spacing: 50 // минимальное расстояние между узлами
});
scaleToFit) — подгоняет всю сеть под размеры
видимой области:network.scaleToFit();
Эти методы обеспечивают плавное перемещение узлов и изменение толщины связей в зависимости от размера экрана и количества элементов.
Mind.js поддерживает гибкую кастомизацию:
color:nodeA.color = '#3498db';
circle,
rectangle, ellipse.edgeAB.style = { width: edgeAB.weight * 5 };
theme) автоматически
подстраивают фон, цвет текста и сетку под светлый или тёмный режим.Для интерактивности поддерживаются события:
nodeClicknodeHoveredgeClickПример обработчика клика по узлу:
network.on('nodeClick', (node) => {
console.log('Клик по узлу:', node.id);
});
Анимация перемещения узлов включается автоматически при изменении положения, обеспечивая плавный переход между состояниями сети.
Mind.js позволяет динамически подгружать данные из внешних источников. Например, сеть можно строить из JSON:
const jsonData = {
nodes: [
{ id: 'A', label: 'Вход', data: { value: 0.5 } },
{ id: 'B', label: 'Выход', data: { value: 0.8 } }
],
edges: [
{ from: 'A', to: 'B', weight: 0.8 }
]
};
network.loadData(jsonData);
network.autoLayout({ method: 'force' });
network.scaleToFit();
При изменении данных методы autoLayout и
scaleToFit можно вызывать повторно, чтобы визуализация
оставалась адаптивной и информативной.
Для больших сетей используется ленивая отрисовка
(lazyRender) и кэширование вычислений
позиций узлов, что снижает нагрузку на браузер. Mind.js
автоматически распределяет вычисления кадров, чтобы интерфейс оставался
отзывчивым даже при тысячах узлов.
Узлы можно закреплять в позиции:
nodeA.locked = true;
Это позволяет создавать гибридные схемы: часть сети подвижна, а ключевые элементы остаются фиксированными, обеспечивая удобную адаптивную визуализацию при изменении структуры.
Mind.js объединяет моделирование нейронных сетей с мощными инструментами адаптивной визуализации. Основные возможности включают:
Эти функции делают библиотеку удобной для построения как обучающих приложений, так и визуальных инструментов анализа данных и сетевых структур.