Слой Conv1D в TensorFlow.js предназначен для обработки одномерных последовательностей, таких как временные ряды, текстовые данные или аудиосигналы. Он выполняет сверточную операцию вдоль единственного измерения входного тензора, выявляя локальные закономерности и признаки, которые могут быть полезны для дальнейшего анализа или классификации.
filters Определяет количество фильтров (ядер свертки), которые будут применяться к входным данным. Каждый фильтр обучается распознавать отдельный признак в последовательности.
kernelSize Размер окна свертки. Задает количество соседних элементов последовательности, которые учитываются одновременно при вычислении одного значения свертки.
strides Шаг свертки, задающий смещение окна при движении по последовательности. Значение по умолчанию — 1. Большие значения уменьшают размер выходного тензора.
padding Определяет стратегию дополнения последовательности. Возможные значения:
'valid' — без дополнения, выходной тензор меньше
входного.'same' — выходной тензор того же размера, что и
входной, благодаря добавлению нулей по краям.activation Функция активации, применяемая к
результату свертки. Наиболее часто используются 'relu',
'sigmoid' или 'tanh'.
useBias Булевый параметр, включающий или
исключающий смещение для каждого фильтра. По умолчанию включено
(true).
Слой Conv1D принимает тензор формы:
[batchSize, sequenceLength, inputChannels]
Пример входного массива для временного ряда с 3 признаками на каждом шаге и длиной последовательности 100:
const input = tf.input({shape: [100, 3]});
const conv1dLayer = tf.layers.conv1d({
filters: 64,
kernelSize: 3,
strides: 1,
padding: 'same',
activation: 'relu',
useBias: true
});
После создания слой можно применить к входному тензору:
const output = conv1dLayer.apply(input);
filters) влияет
на глубину выходного тензора. Если вход имеет форму
[batchSize, sequenceLength, inputChannels], то выход после
Conv1D с filters = 64 и padding = 'same' будет
[batchSize, sequenceLength, 64].kernelSize) определяет
масштаб локальных паттернов, которые может уловить фильтр. Большие ядра
захватывают более длинные зависимости, но могут терять локальные
детали.strides) сокращает размер
выходного тензора. Например, при stride = 2 длина
последовательности уменьшается примерно вдвое.Для извлечения более сложных признаков часто применяют несколько последовательных слоев Conv1D. Первый слой может выявлять базовые локальные закономерности, а последующие слои комбинируют их в более сложные структуры.
const model = tf.sequential();
model.add(tf.layers.conv1d({filters: 32, kernelSize: 3, activation: 'relu', inputShape: [100, 3]}));
model.add(tf.layers.conv1d({filters: 64, kernelSize: 3, activation: 'relu'}));
model.add(tf.layers.globalAveragePooling1d());
model.add(tf.layers.dense({units: 10, activation: 'softmax'}));
Использование GlobalAveragePooling1D позволяет свести выход последовательных сверток к вектору фиксированной длины, удобному для последующего полносвязного слоя.
kernelSize (3–5) подходят для локальных
закономерностей, большие (7–15) — для более глобальных паттернов.padding и
strides.Слой Conv1D в TensorFlow.js является мощным инструментом для извлечения признаков из одномерных последовательностей. Правильная настройка параметров и сочетание с другими слоями позволяет строить гибкие и точные модели для анализа временных рядов, текста и аудиосигналов.