Позвольте мне объяснить операции, которые вы упомянули, более подробно, чтобы вы понимали различия между их интуицией и использованием:
Каскадный межканальный параметрический пул:
Это введено в Network-in-Network бумага и реализована в Keras как GlobalAveragePooling2D()
.Эта операция усредняется по выходным данным каждой карты объектов в предыдущих слоях.
Это структурный регуляризатор, который обеспечивает соответствие между картами объектов и категориями, поэтому карты объектов можно интерпретировать как достоверность категорий.Он уменьшает количество параметров и суммирует пространственную информацию, и, следовательно, он более устойчив к пространственным преобразованиям входных данных.
GlobalAveragePooling2D()
обычно используется без слоев Dense()
в модели до него.
Conv1D:
Conv1D()
- операция свертки, точно такая же, как Conv2D()
, но она применяется только к одному измерению.Conv1D()
обычно используется для последовательностей или других данных 1D, а не для изображений.
Глубинно отделимая свертка:
Цитирование из документации Keras
Отделимые свертки состоят в том, что сначала выполняют пространственную свертку по глубине (которая действует на каждый входной канал отдельно), а затем точечную свертку, которая смешивает результирующие выходные каналы.Аргумент deep_multiplier контролирует, сколько выходных каналов генерируется для каждого входного канала на шаге глубины.
Этот блог довольно хорошо объясняет разделяемую по глубине свертку.
Conv2D(num_filters, (1, 1)):
Это обычно называется сверткой 1x1
, представленной в статье Network-in-Network .
Сверточные фильтры 1x1
используются для уменьшения / увеличения размерности в измерении фильтра, не влияя на пространственные размеры.Это также используется в архитектуре Google Inception для уменьшения размерности пространства фильтра.
В вашем конкретном случае я не совсем уверен, какой из этих методов вы можете использовать.Я не думаю, что Conv1D
будет полезным.Вы можете определенно использовать GlobalMaxPooling
или GlobalAveragePooling
, если вы не используете Dense
перед ними.Это полезно для получения пространственной информации.Depthwise Separable Convolution также может использоваться вместо ваших Conv2D
слоев.Conv2D(num_filters, (1, 1))
очень полезен для уменьшения размерности пространства фильтра, в основном к концу архитектуры вашей модели.
Возможно, если вы будете следовать ресурсам, вы лучше поймете операции и посмотрите, как они применяются к вашемупроблема.