Автоэнкодер CNN - фильтры уменьшения или увеличения?

0

Вопрос

В автоэнкодере, основанном на CNN, вы увеличите или уменьшите количество фильтров между слоями ? По мере того как мы сжимаем информацию, я думал об уменьшении.

Приведем пример части кодера, в которой количество фильтров уменьшается на каждом новом уровне с 16 до 8 до 4.

x = Conv2D(filters = 16, kernel_size = 3, activation='relu', padding='same', name='encoder_1a')(inputs)
x = MaxPooling2D(pool_size = (2, 2), padding='same', name='encoder_1b')(x)

x = Conv2D(filters = 8, kernel_size = 3, activation='relu', padding='same', name='encoder_2a')(x)
x = MaxPooling2D(pool_size = (2, 2), padding='same', name='encoder_2b')(x)

x = Conv2D(filters = 4, kernel_size = 3, activation='relu', padding='same', name='encoder_3a')(x)
x = MaxPooling2D(pool_size = (2, 2), padding='same', name='encoder_3b')(x)
autoencoder conv-neural-network keras
2021-11-22 04:01:18
1

Лучший ответ

0

Не всегда бывает так, что размеры фильтров уменьшаются или увеличиваются с увеличением количества слоев в кодере. В большинстве примеров кодера, которые я видел в сверточных архитектурах автоэнкодера, высота и ширина уменьшаются за счет пошаговой свертки или объединения, а глубина слоя увеличивается (размеры фильтров увеличиваются), сохраняется аналогично предыдущему или изменяется с каждым новым слоем в кодере. Но есть также примеры, когда выходные каналы или размеры фильтров уменьшаются с увеличением количества слоев.

Обычно автоэнкодер кодирует входные данные в скрытое представление/вектор или вложение, которое имеет меньший размер, чем входные данные, что сводит к минимуму ошибку восстановления. Таким образом, оба вышеперечисленных метода могут быть использованы для создания неполного автоэнкодера путем изменения размера ядра, количества слоев, добавления дополнительного слоя в конце кодера с определенным размером и т.д.

Пример увеличения фильтра

На изображении ниже по мере добавления большего количества слоев в кодере размеры фильтров увеличиваются. Но в качестве входных данных 28*28*1 = 784 размерные объекты и сглаженное представление 3*3*128 = 1152 более того, перед последним слоем добавляется еще один слой, который является слоем встраивания. Это уменьшает размер объекта с заранее определенным количеством выходов в полностью подключенной сети. Даже последний плотный/полностью подключенный слой может быть заменен изменением количества слоев или размера ядра для вывода (1, 1, NUM_FILTERS).

enter image description here

Пример уменьшения фильтра

Простой пример уменьшения фильтров в кодере по мере увеличения количества слоев можно найти на примере сверточного автоэнкодера keras, как и в вашем коде.

import keras
from keras import layers

input_img = keras.Input(shape=(28, 28, 1))

x = layers.Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
x = layers.MaxPooling2D((2, 2), padding='same')(x)
x = layers.Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = layers.MaxPooling2D((2, 2), padding='same')(x)
x = layers.Conv2D(8, (3, 3), activation='relu', padding='same')(x)
encoded = layers.MaxPooling2D((2, 2), padding='same')(x)

Рекомендации

2021-11-22 06:57:52

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории