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


82

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 레이어의 차이점을 설명 할 수 있습니까?


1
현재 차이가없는 셈이 있습니다 . 여기에 대한 논의가 있습니다. 원래 의도는 Dense입력을 평평하게 한 다음 모양을 변경하여 다른 시간 단계를 연결하고 더 많은 매개 변수를 가지며 TimeDistributed시간 단계를 분리하여 유지하는 것입니다 (따라서 매개 변수가 더 적음). 귀하의 경우 Dense에는 500 개의 매개 변수가 있어야 TimeDistributed합니다. 50
gionni

@gionni 아니요, 매개 변수 수가 동일합니다 (둘 다 6 개). 그래서 사실상 차이가 없습니다 atm?
김범수 2017-11-16

예, 정확히 차이가있을 경우 가질 수있는 매개 변수의 수입니다. 현재는 없습니다
gionni

답변:


82

으로 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)동일합니다.


3
모델 자체를 래핑하는 TimeDistributed를 사용하는 예가 있습니다. 이것이 적용되는 경우Input 텐서에map , Input?의 각 조각을 포함하는 목록에 적용된 모델을 수행하는 것과 비교하여 이것과 다른 점이 있습니까?
CMCDragonkai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.