Свёртка (convolution) является ключевой операцией в области глубокого
обучения, особенно при работе с изображениями, звуком и временными
рядами. В TensorFlow.js свёртка реализуется через функции слоя
Conv1D, Conv2D и Conv3D, а также
через низкоуровневые операции tf.conv1d,
tf.conv2d и tf.conv3d. Основная цель свёртки —
извлечение локальных признаков из входных данных с помощью обучаемых
фильтров (ядер свёртки).
Свёртка заключается в перемещении ядра по входной матрице и вычислении скалярного произведения элементов ядра и соответствующих элементов входа. Для двумерных изображений операция выглядит следующим образом:
[ y[i, j] = {m=0}^{M-1}{n=0}^{N-1} x[i+m, j+n] k[m, n]]
где (x) — входная матрица, (k) — ядро свёртки размером (M N), (y[i,j]) — результат свёртки в позиции ((i,j)).
Основные параметры свёртки:
Для работы с двумерными данными используется tf.conv2d.
Пример базового использования:
const input = tf.tensor4d([/* данные изображения */], [1, 28, 28, 1]);
const kernel = tf.tensor4d([/* ядро свёртки */], [3, 3, 1, 16]);
const output = tf.conv2d(input, kernel, strides = [1, 1], padding = 'same');
input имеет форму
[batch, height, width, channels].kernel имеет форму
[filterHeight, filterWidth, inChannels, outChannels].strides определяет шаг по высоте и ширине.padding может быть 'same' (размер выхода
равен входу) или 'valid' (без дополнительной обёртки
нулями).tf.separableConv2d.tf.GradientTape градиенты свёрточных ядер
автоматически вычисляются для последующего обновления весов
оптимизатором.Свёртка выделяет локальные признаки на изображении. Например:
Свёртки чаще всего применяются как первые слои в сверточных нейронных сетях (CNN). После свёртки обычно применяют:
В TensorFlow.js это реализуется через последовательное добавление слоёв:
const model = tf.sequential();
model.add(tf.layers.conv2d({
inputShape: [28, 28, 1],
filters: 32,
kernelSize: 3,
activation: 'relu',
padding: 'same'
}));
model.add(tf.layers.maxPooling2d({ poolSize: 2, strides: 2 }));
tf.tidy() помогает управлять памятью,
автоматически удаляя промежуточные тензоры.Свёртка позволяет:
Свёртка в TensorFlow.js обеспечивает гибкий и мощный инструмент для построения современных моделей машинного обучения, соединяя простоту JavaScript с возможностями GPU-ускорения через браузер.