Библиотека Keras.js предоставляет возможность работать с нейронными сетями прямо в браузере на JavaScript, обеспечивая перенос моделей, обученных в Python Keras, в веб-приложения. Одной из ключевых групп слоев являются слои объединения и разделения, которые позволяют гибко комбинировать и разветвлять потоки данных внутри модели.
Слой Concatenate выполняет объединение нескольких входных тензоров вдоль заданной оси. Это особенно важно при работе с многопоточными архитектурами, где необходимо соединить результаты параллельных ветвей.
Основные параметры:
axis — ось, вдоль которой происходит конкатенация. По
умолчанию -1 (последняя ось, чаще всего канал).name — уникальное имя слоя в модели.Пример использования:
const keras = require('keras-js');
const input1 = new keras.layers.Input({shape: [32]});
const input2 = new keras.layers.Input({shape: [32]});
const concatenated = new keras.layers.Concatenate({axis: 1}).apply([input1, input2]);
В этом примере два входных вектора длиной 32 соединяются вдоль оси
1, создавая результирующий тензор длиной 64. Concatenate
поддерживает соединение более двух входов одновременно.
Особенности:
Слой Add выполняет поэлементное сложение нескольких тензоров одинаковой формы. Это удобно для реализации остаточных соединений, как в ResNet.
Параметры:
name — имя слоя для идентификации в модели.Пример:
const added = new keras.layers.Add().apply([tensor1, tensor2]);
Ключевые моменты:
Слой Multiply выполняет поэлементное умножение входных тензоров. Отличается от Add тем, что результат зависит от произведения значений, что позволяет реализовывать механизмы взвешивания потока данных.
Пример использования:
const multiplied = new keras.layers.Multiply().apply([tensor1, tensor2]);
Особенности применения:
Слой Split позволяет разделить один тензор на несколько частей вдоль указанной оси. Это важно для организации параллельной обработки различных сегментов данных.
Параметры:
num_or_size_splits — количество частей или массив
размеров каждой части.axis — ось разделения.name — имя слоя.Пример:
const splitTensors = new keras.layers.Lambda({
function: (x) => {
const [a, b] = tf.split(x, 2, 1); // Разделение вдоль оси 1 на 2 части
return [a, b];
}
}).apply(inputTensor);
Ключевые моменты:
Комбинация Concatenate, Add, Multiply и Split позволяет строить сложные архитектуры нейронных сетей:
Эти слои составляют фундамент для построения современных архитектур типа Inception, ResNet, DenseNet, где важна гибкая маршрутизация данных.
Если требуется, можно добавить наглядные схемы потоков данных, показывающие, как тензоры соединяются и разделяются между слоями. Это особенно полезно для сложных сетей с несколькими ветвями.