Слои свёртки: Conv1D, Conv3D, DepthwiseConv2D, SeparableConv2D

Свёрточные слои являются ключевым элементом нейронных сетей для обработки данных с пространственной или временной структурой. В Keras.js реализованы различные виды свёрточных слоёв, обеспечивающие гибкость в построении архитектур: одномерные, трёхмерные, глубинные и раздельные свёртки.


Conv1D

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

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

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

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]
  }
});

Отличия и рекомендации по использованию

  • Conv1D — для временных рядов, аудио, текстовых данных.
  • Conv3D — для видео и 3D-данных.
  • DepthwiseConv2D — уменьшение числа параметров при сохранении информативности признаков; мобильные сети.
  • SeparableConv2D — комбинированный подход для повышения эффективности и скорости обучения, экономя ресурсы на больших изображениях.

Каждый слой оптимизирован для своей структуры данных. Использование подходящего типа свёртки напрямую влияет на производительность, точность и эффективность нейросети.