Параметры слоя Keras conv1d: фильтры и размер ядра
Я очень смущен этими двумя параметрами в слое conv1d от keras: https://keras.io/layers/convolutional/#conv1d
в документации сказано, что:
filters: Integer, the dimensionality of the output space (i.e. the number output of filters in the convolution).
kernel_size: An integer or tuple/list of a single integer, specifying the length of the 1D convolution window.
но это, похоже, не относится к стандартным терминологиям, которые я вижу во многих учебниках, таких как https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/ и https://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/
используя вторую ссылку учебника, которая использует Keras, я бы предположил, что на самом деле "kernel_size" имеет отношение к обычной концепции "фильтра", которая определяет скользящее окно на входном пространстве объектов. А как насчет параметра фильтра в conv1d? Что он делает?
например, в следующем фрагменте кода:
model.add(embedding_layer)
model.add(Dropout(0.2))
model.add(Conv1D(filters=100, kernel_size=4, padding='same', activation='relu'))
предположим, слой встраивания выводит матрицу измерения 50 (строки, каждая строка-это слово в предложении) x 300 (столбцы, векторное измерение слова), как слой conv1d преобразует эту матрицу?
большое спасибо
1 ответов
вы правы, говоря, что kernel_size
определяет размер скользящего окна.
на filters
параметры-это просто, сколько разных окон у вас будет. (Все они одинаковой длины, то есть kernel_size
). Сколько различных результатов или каналов вы хотите получить.
при использовании filters=100
и kernel_size=4
, вы создаете 100 различных фильтров, каждый из которых имеет длину 4. Результат принесет 100 различных извилин.
кроме того, каждый фильтр имеет достаточно параметров для рассмотрения всех входных каналов.
слой Conv1D ожидает следующие размеры:
(batchSize, length, channels)
Я полагаю, что лучший способ использовать его-иметь количество слов в измерении длины (как будто слова по порядку образуют предложение), а каналы-выходное измерение вложения (числа, которые определяют одно слово).
так:
batchSize = number of sentences
length = number of words in each sentence
channels = dimension of the embedding's output.
сверточный слой пройдет 100 различных фильтров, каждый фильтр будет скользить по length
измерение (слово за словом, в группах по 4), учитывая все каналы, которые определяют слово.
выходы имеют форму:
(number of sentences, 50 words, 100 output dimension or filters)
фильтры имеют форму:
(4 = length, 300 = word vector dimension, 100 output dimension of the convolution)