[TensorFlow] Convolutional Transpose Layer 예제

tf.keras.layers.Conv2DTranspose 레이어는 Convolutional Transpose 또는 Deconvolutional 레이어로서, 이미지를 업샘플링하거나 이미지 생성 작업에 사용됩니다. 아래는 tf.keras.layers.Conv2DTranspose 레이어를 사용한 예제입니다.

import tensorflow as tf

## 입력 이미지 크기: 4x4, 채널 개수: 3 (예시로)
input_shape = (4, 4, 3)

## Conv2DTranspose 레이어 정의
conv_transpose_layer = tf.keras.layers.Conv2DTranspose(filters=16, kernel_size=(3, 3), strides=(2, 2), padding='valid', input_shape=input_shape)

## 더미 입력 이미지 생성
dummy_input = tf.random.normal(shape=(1, *input_shape))  # 배치 크기 1로 가정

## Conv2DTranspose 레이어 실행
output = conv_transpose_layer(dummy_input)

print("Input shape:", dummy_input.shape)
print("Output shape:", output.shape)` 

위 예제에서는 tf.keras.layers.Conv2DTranspose 레이어를 사용하여 입력 이미지 크기가 4x4인 더미 이미지에 대한 레이어를 정의하고 실행합니다. filters 매개변수로 출력 채널 수를 지정하며, kernel_size로 커널의 크기를 설정합니다. strides로 스트라이드를 설정하여 업샘플링을 수행합니다. padding은 ‘valid’ 또는 ‘same’으로 설정할 수 있습니다.

실행 결과:

Input shape: (1, 4, 4, 3)
Output shape: (1, 9, 9, 16)` 

위에서 확인할 수 있듯이, 입력 이미지의 형태가 (1, 4, 4, 3)이고 출력 이미지의 형태가 (1, 9, 9, 16)임을 확인할 수 있습니다. Conv2DTranspose 레이어는 입력 이미지를 업샘플링하여 출력 이미지를 생성했습니다.

Convolutional Transpose 레이어는 주로 이미지 생성 작업에서 활용되며, 생성적 적대 신경망(GAN)과 같은 모델에서 사용될 수 있습니다.