konvolutionel autoencoder

En konvolutionel autoencoder er en type neuralt netværk, der består af et encoder-netværk med konvolutionelle lag og et decoder-netværk med transponerede konvolutionelle lag, trænet til at rekonstruere inputdata.

Kort fortalt

En konvolutionel autoencoder lærer at komprimere billeder til en latent repræsentation og derefter genskabe dem ved hjælp af foldningslag.

Kategori
arkitektur
Niveau
øvet

Betydninger

1
  1. 1

    Et neuralt netværk med to dele: en encoder, der anvender konvolutionelle lag og pooling til at reducere dimensionen af input og danne en latent repræsentation, og en decoder, der anvender transponerede konvolutionelle lag (eller upsampling) til at rekonstruere input fra den latente repræsentation.

    • En konvolutionel autoencoder kan trænes på MNIST-datasættet til at rekonstruere håndskrevne cifre.

Hvornår bruges det

Den konvolutionelle autoencoder bruges typisk til uovervåget læring på billeddata, fx til støjreduktion, billedkomprimering eller indlæring af nyttige repræsentationer til videre opgaver.

Kodeeksempel

from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D
from tensorflow.keras.models import Model

input_img = Input(shape=(28, 28, 1))
x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2, 2), padding='same')(x)

x = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
x = Conv2D(16, (3, 3), activation='relu')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')

Et simpelt eksempel på en konvolutionel autoencoder i Keras til MNIST-billeder (28x28).

Oprindelse

"Konvolutionel" refererer til brugen af foldningslag (convolution), og "autoencoder" betegner et netværk, der lærer at rekonstruere sin egen input.