[TensorFlow] TimeDistributed 레이어 예제

tf.keras.layers.TimeDistributed 레이어는 시퀀스 내 각 시간 단계에 대해 동일한 레이어를 적용하는 데 사용됩니다. 주로 시계열 데이터나 시퀀스 데이터의 각 요소에 대해 동일한 레이어를 적용하고자 할 때 활용됩니다. 아래는 TimeDistributed 레이어를 사용한 예제입니다.

import tensorflow as tf
from tensorflow.keras.layers import Input, Dense, TimeDistributed
from tensorflow.keras.models import Model

## 더미 시퀀스 데이터 생성
dummy_sequence = tf.random.normal(shape=(4, 10, 32))  # 4개의 시퀀스, 각 시퀀스 길이: 10, 특성 개수: 32

## 입력 레이어 정의
input_layer = Input(shape=(10, 32))

## TimeDistributed Dense 레이어 정의
time_distributed_layer = TimeDistributed(Dense(64, activation='relu'))(input_layer)

## 모델 생성
model = Model(inputs=input_layer, outputs=time_distributed_layer)

## 모델 컴파일 (TimeDistributed 레이어에는 별도의 컴파일이 필요하지 않음)
model.compile(optimizer='adam', loss='mse')

## 모델 요약
model.summary()

## 모델 실행
output = model.predict(dummy_sequence)

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

위 예제에서는 입력 레이어와 TimeDistributed 레이어를 사용하여 시퀀스 내 각 시간 단계에 대해 Dense 레이어를 적용합니다. 이렇게 하면 각 시간 단계마다 독립적인 Dense 레이어가 생성되며, 시퀀스의 모든 단계에 대해 같은 가중치를 사용합니다.

실행 결과 예시:

Input shape: (4, 10, 32)
Output shape: (4, 10, 64)` 

위에서 확인할 수 있듯이, TimeDistributed 레이어를 사용하여 입력 시퀀스의 각 시간 단계에 대해 Dense 레이어가 적용되어 출력이 생성됩니다.