10

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) 

, 난 의 출력 형태 (없음, 10, 1) 얻었다.

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

+0

차이점은 없습니다. [here] (https://github.com/fchollet/keras/issues/278)에 대한 토론이 있습니다. 나는 원래의 의도가'Dense' 레이어를 입력을 평평하게하고 다시 모양을 바꾸어서 다른 시간 간격을 연결하고 더 많은 매개 변수를 연결하는 것과 시간 간격을 분리하여 유지하는'TimeDistributed' (따라서 더 적은 매개 변수를 가짐)를 구분하는 것이라고 생각합니다. 당신의 경우에'Dense'는 500 명의 매개 변수를 가져야 만합니다.'TimeDistributed' 만 50 – gionni

+0

@gionni 아니요, 매개 변수의 개수는 6 개입니다. 그래서 거의 차이가 없습니다. –

+0

맞아요, 차이가 있다면 매개 변수 수입니다. 순간에 거기에 있지 않다 – gionni

답변

7

keras - 보통 두 번째 차원 (샘플 차원 이후) - time 차원과 관련됩니다. 예를 들어 데이터가 5-dim이고 범위가 (sample, time, width, length, channel) 인 경우 5-d 출력을 얻기 위해 TimeDistributed (4-dim(sample, width, length, channel))을 사용하는 길쌈 레이어를 시간 차원 (각 시간 조각에 같은 레이어 적용)으로 적용 할 수 있습니다. .

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

+1

당신이 신경 쓰지 않는다면 나는 upvote를 고맙게 여길 것이다. –

관련 문제