[python] Keras에서 TimeDistributed 레이어의 역할은 무엇입니까?

Keras에서 TimeDistributed 래퍼가 수행하는 작업을 파악하려고합니다.

TimeDistributed는 “입력의 모든 시간 조각에 레이어를 적용합니다.”

하지만 실험을 좀 해보니 이해할 수없는 결과가 나왔습니다.

요컨대 LSTM 계층과 관련하여 TimeDistributed 및 Just Dense 계층은 동일한 결과를 나타냅니다.

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)

두 모델 모두 (None, 10, 1) 출력 모양을 얻었습니다 .

누구든지 RNN 레이어 후 TimeDistributed와 Dense 레이어의 차이점을 설명 할 수 있습니까?



답변

으로 keras– 일반적으로 초 측정 (샘플 사이즈로 한) – – 연속적인 모델을 구축하는 동안 관련된 time치수. 예를 들어, 데이터가있는 경우 있음이 수단 5-dim으로 (sample, time, width, length, channel)사용 길쌈 층을 적용 할 수있는 당신 TimeDistributed(에 적용 할 수 4-dim(sample, width, length, channel)시간 차원에 따라)를 얻기 위해 (각 시간 조각에 동일한 레이어를 적용) 5-d출력을.

이있는 경우 Dense에 있다는 것입니다 keras버전 2.0에서 Dense디폴트로 (당신이 적용 할 경우 예를 들어, 단지 마지막 차원에 적용되는 Dense(10)형태로 입력 (n, m, o, p)하면 모양 출력을 얻을 수 있습니다 (n, m, o, 10)그래서 귀하의 경우) DenseTimeDistributed(Dense)동일합니다.


답변