Автоэнкодер CNN - filtry zmniejszyć lub zwiększyć?

0

Pytanie

W автоэнкодере, opierającym się na CNN, można zwiększyć lub zmniejszyć ilość filtrów między warstwami ? Gdy ściskamy informacje, myślałem o zmniejszeniu.

Oto przykład części kodera, w której ilość filtrów zmniejsza się na każdym nowym poziomie, z 16 do 8 do 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

Najlepsza odpowiedź

0

Nie zawsze jest tak, że wymiary filtrów zmniejszają lub zwiększają się wraz ze wzrostem liczby warstw w кодере. W większości przykładów kodera, które widziałem w сверточных architekturze автоэнкодера, wysokość i szerokość są zmniejszone kosztem turowa zestawienia lub stowarzyszenia, a głębokość warstwy wzrasta (wymiary filtrów zwiększa się), utrzymuje się podobnie do poprzedniego lub zmienia się z każdą nową warstwą w кодере. Ale są też przykłady, kiedy kanały wyjściowe lub wymiary filtrów zmniejszają się wraz ze wzrostem liczby warstw.

Zazwyczaj автоэнкодер koduje dane wejściowe w ukryty widok/wektor lub załącznik, który ma mniejszy rozmiar, niż dane wejściowe, co minimalizuje błąd odzyskiwania. W ten sposób obie powyższe metody mogą być wykorzystywane do tworzenia niekompletnego автоэнкодера poprzez zmianę rozmiaru jądra, ilości warstw, dodanie dodatkowej warstwy w końcu kodera z określonym rozmiarem itp.

Przykład powiększenie filtra

Na zdjęciu poniżej po dodaniu większej ilości warstw w кодере wymiary filtrów zwiększa się. Ale jako danych wejściowych 28*28*1 = 784 wymiarowe obiekty i wygładzona widok 3*3*128 = 1152 ponadto, przed ostatnią warstwą dodaje jeszcze jedną warstwę, która jest warstwą osadzania. To zmniejsza rozmiar obiektu z góry określonej liczby wyjść w pełni podłączonej sieci. Nawet ostatnio mocno/całkowicie podłączony warstwa może być zastąpiony przez zmianę ilości warstw lub wielkości jądra do wyjścia (1, 1, NUM_FILTERS).

enter image description here

Przykład zmniejszyć filtra

Prosty przykład zmniejszyć filtrów w кодере wraz ze wzrostem liczby warstw można znaleźć na przykładzie сверточного автоэнкодера keras, jak i w swoim kodzie.

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)

Zalecenia

2021-11-22 06:57:52

W innych językach

Ta strona jest w innych językach

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