Свёрточные слои являются ключевым элементом нейронных сетей для обработки данных с пространственной или временной структурой. В Keras.js реализованы различные виды свёрточных слоёв, обеспечивающие гибкость в построении архитектур: одномерные, трёхмерные, глубинные и раздельные свёртки.
Conv1D применяется к последовательностям или
временным рядам. Этот слой обрабатывает входные данные формы
(samples, steps, input_dim), где steps — длина
последовательности, а input_dim — размерность признаков на
каждом шаге.
Параметры:
filters — число фильтров (выходных каналов).kernel_size — размер ядра свёртки. Может быть целым
числом или кортежем, определяющим ширину окна.strides — шаг свёртки (по умолчанию 1).padding — 'valid' (без паддинга) или
'same' (выход той же длины, что и вход).activation — функция активации. Например,
relu, tanh.Conv1D широко используется для анализа временных рядов, аудиосигналов и текстов, превращая последовательности в набор признаков, удобных для последующих полносвязных слоёв или рекуррентных сетей.
Пример:
const model = new KerasJS.Sequential();
model.add({
className: 'Conv1D',
config: {
filters: 32,
kernel_size: 3,
strides: 1,
padding: 'same',
activation: 'relu',
inputShape: [100, 1]
}
});
Conv3D выполняет свёртку в трёхмерном пространстве,
что особенно важно для обработки видеопоследовательностей или
медицинских томограмм. Вход имеет форму
(samples, depth, height, width, channels).
Основные параметры:
filters — количество фильтров.kernel_size — размер ядра свёртки
(depth, height, width).strides — шаг по каждому измерению.padding — 'valid' или
'same'.activation — функция активации.Conv3D извлекает пространственно-временные признаки, объединяя информацию по трём измерениям. Особенно эффективен для задач классификации видео, обнаружения объектов в 3D-сканах и анализа динамических объёмных данных.
Пример:
model.add({
className: 'Conv3D',
config: {
filters: 16,
kernel_size: [3, 3, 3],
strides: [1, 1, 1],
padding: 'same',
activation: 'relu',
inputShape: [10, 64, 64, 1]
}
});
DepthwiseConv2D — это специализированная двумерная свёртка, которая применяется отдельно к каждому входному каналу, вместо объединения всех каналов в одну свёртку. Позволяет значительно снизить количество параметров и вычислительную сложность, что важно для мобильных и встроенных устройств.
Параметры:
kernel_size — размер ядра.strides — шаг свёртки.padding — 'valid' или
'same'.depth_multiplier — множитель числа фильтров на каждый
канал (по умолчанию 1).activation — функция активации.Глубинные свёртки обычно используют в архитектурах MobileNet для достижения высокой эффективности при минимальных ресурсах.
Пример:
model.add({
className: 'DepthwiseConv2D',
config: {
kernel_size: [3, 3],
strides: [1, 1],
padding: 'same',
depth_multiplier: 1,
activation: 'relu',
inputShape: [128, 128, 3]
}
});
SeparableConv2D объединяет DepthwiseConv2D и Pointwise Conv2D (1x1). Сначала выполняется свёртка по каждому каналу отдельно, затем применяется 1x1 свёртка для объединения каналов. Это позволяет уменьшить число параметров без потери выразительности модели.
Параметры:
filters — число выходных каналов после pointwise
свёртки.kernel_size — размер ядра глубинной свёртки.strides — шаг свёртки.padding — 'valid' или
'same'.activation — функция активации.depth_multiplier — множитель для
depthwise-свёртки.SeparableConv2D часто используется в мобильных сетях и для ускорения обучения больших архитектур с минимальной потерей точности.
Пример:
model.add({
className: 'SeparableConv2D',
config: {
filters: 64,
kernel_size: [3, 3],
strides: [1, 1],
padding: 'same',
depth_multiplier: 1,
activation: 'relu',
inputShape: [128, 128, 3]
}
});
Каждый слой оптимизирован для своей структуры данных. Использование подходящего типа свёртки напрямую влияет на производительность, точность и эффективность нейросети.