Autoencoder de CNN - la diminution ou l'augmentation des filtres?

0

La question

Dans un Autoencoder basé sur CNN, allez-vous augmenter ou diminuer le nombre de filtres entre les couches ? Comme nous l'avons compresser l'information, je pensais à la baisse.

Exemple ici de l'encodeur de la partie où le nombre de filtres est diminué à chaque nouvelle couche, à partir de 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

La meilleure réponse

0

Il n'est pas toujours le cas que les tailles de filtre sont réduit ou augmenté avec l'augmentation du nombre de couches dans le codeur. Dans la plupart des exemples de codeur, j'ai vu de convolution autoencoder architectures de la hauteur et la largeur est réduite par strided convolution ou la mise en commun, et la profondeur de la couche est augmentée (de tailles de filtre sont à la hausse), conservé à l'un ou varient avec chaque nouvelle couche dans le codeur. Mais il y a aussi des exemples où les canaux de sortie ou de tailles de filtre sont diminués avec plus de couches.

Généralement autoencoder code de l'entrée dans latente de représentation/vecteur ou d'insertion qui a une plus faible dimension de l'entrée qui minimise l'erreur de reconstruction. Afin que tous les ci-dessus peut être utilisé pour la création de undercomplete autoencoder en variant la taille du noyau, le nombre de couches, ajouter une couche supplémentaire à la fin de codeur avec une certaine dimension, etc.

Filtre à accroître exemple

Dans l'image ci-dessous que plus de couches sont ajoutés dans l'encodeur le filtre de l'augmentation de la taille. Mais comme l'entrée 28*28*1 = 784 dimension des fonctionnalités et de la représentation aplatie 3*3*128 = 1152 est plus alors une autre couche est ajoutée avant la couche finale qui est l'incorporation de la couche. Il réduit la fonction de la dimension de nombre prédéfini de sorties entièrement connecté en réseau. Même le dernier dense/entièrement connecté couche peut être remplacé en variant le nombre de couches ou de la taille du noyau d'avoir une sortie (1, 1, NUM_FILTERS).

enter image description here

Filtre diminution exemple

Un exemple simple de filtres en baisse dans le codeur comme le nombre de couches augmentation peut être trouvé sur keras convolutifs autoencoder exemple, tout comme votre code.

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)

Références

2021-11-22 06:57:52

Dans d'autres langues

Cette page est dans d'autres langues

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