Autoencoder della CNN - aumentare o diminuire i filtri?

0

Domanda

In un Autoencoder basato sulla CNN, la volontà di aumentare o diminuire il numero di filtri tra gli strati ? Come abbiamo comprimere le informazioni, stavo pensando di diminuire.

Esempio qui di encoder parte in cui il numero di filtri è diminuito a ogni nuovo livello, da 16 a 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

Migliore risposta

0

Non è sempre il caso che le dimensioni del filtro sono ridotti o aumentati con l'aumento del numero di strati di encoder. Nella maggior parte degli esempi di encoder che ho visto di convolutional autoencoder architetture l'altezza e la larghezza è minore grazie strided di convoluzione o di pool, e la profondità di strato è aumentata (dimensioni del filtro sono aumentati), tenuto simile a durare uno o varia con ogni nuovo livello nell'encoder. Ma c'è anche esempi in cui i canali di output o di dimensioni del filtro sono diminuiti con più strati.

Di solito autoencoder codifica di input in latente rappresentazione/o vettoriale incorporamento che ha dimensione inferiore di ingresso che minimizza l'errore di ricostruzione. In modo che entrambi possono essere utilizzati per la creazione di undercomplete autoencoder variando la dimensione del kernel, numero di strati, aggiungendo un ulteriore livello alla fine di encoder con una certa dimensione, etc.

Filtro aumento di esempio

Nell'immagine qui sotto come più gli strati sono aggiunti nel encoder il filtro aumento di dimensioni. Ma come input 28*28*1 = 784 dimensione caratteristiche e la rappresentazione bidimensionale 3*3*128 = 1152 è più di un altro livello viene aggiunto prima di strato finale che è l'incorporamento di livello. Riduce la funzionalità dimensione, con un numero predefinito di uscite in rete completamente connessa. Anche l'ultimo denso/completamente collegato strato può essere sostituito al variare del numero di strati o la dimensione del kernel per avere un output (1, 1, NUM_FILTERS).

enter image description here

Filtro diminuire esempio

Un semplice esempio di filtri in diminuzione in encoder come il numero di livelli aumentano possono trovare sul keras convolutional autoencoder esempio di come il vostro codice.

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)

Riferimenti

2021-11-22 06:57:52

In altre lingue

Questa pagina è in altre lingue

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