Autoencoder da CNN - aumentar ou diminuir os filtros?

0

Pergunta

Em um Autoencoder com base na CNN, você vai aumentar ou diminuir o número de filtros entre camadas ? Como podemos compactar as informações, eu estava pensando em diminuir.

Aqui um exemplo do codificador parte onde o número de filtros é reduzido em cada nova camada, a partir de 16 para 8 a 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

Melhor resposta

0

Ele não é sempre o caso em que o filtro tamanhos são reduzidos ou aumentados com o aumento do número de camadas no encoder. Na maioria dos exemplos de encoder eu tenho visto de convolucionais autoencoder arquiteturas a altura e a largura é reduzida através strided de convolução ou agrupamento, e a profundidade da camada é maior (filtro tamanhos são aumentados), manteve semelhante para durar um ou variada, com cada nova camada no encoder. Mas há também exemplos em que os canais de saída ou filtro tamanhos são diminuídos com mais camadas.

Geralmente autoencoder codifica entrada em latente representação de vetores ou de incorporação que tenha menor dimensão do que a de entrada, que minimiza a reconstrução de erro. Assim, tanto o acima pode ser usado para a criação de undercomplete autoencoder pela variação do kernel do tamanho, número de camadas, adicionando uma camada extra no final do encoder com uma certa dimensão, etc.

Filtro de aumentar exemplo

Na imagem abaixo como mais camadas são adicionadas no encoder o filtro de aumento de tamanhos. Mas como a entrada 28*28*1 = 784 dimensão recursos e a representação plana 3*3*128 = 1152 é mais do que uma outra camada é adicionada antes da camada final que é a incorporação de camada. Ele reduz a funcionalidade de dimensão, com um número predefinido de saídas em rede totalmente conectada. Até o último densa/totalmente ligado a camada pode ser substituído pela variação do número de camadas de kernel ou de tamanho para ter uma saída (1, 1, NUM_FILTERS).

enter image description here

Filtro de redução exemplo

Um exemplo fácil de filtros diminuindo no codificador como o número de camadas de aumento pode ser encontrado no keras convolucionais autoencoder exemplo assim como seu código.

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)

Referências

2021-11-22 06:57:52

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................