2017-01-30 8 views
2

저는 Keras를 사용하고 두 개의 다른 레이어를 벡터로 연결하려고합니다 (벡터의 첫 번째 값은 첫 번째 레이어의 값이고 다른 부분은 제 2 층의 값). 이들 레이어 중 하나는 Dense 레이어이고 다른 레이어는 Embedding 레이어입니다.Keras : 고밀도 레이어와 임베디드 레이어를 병합하는 방법

나는 두 개의 임베딩 레이어 또는 두 개의 고밀도 레이어를 병합하는 방법을 알고 있지만 임베디드 레이어와 고밀도 레이어 (차원 문제)를 병합하는 방법을 알지 못합니다.

간단한 예는 다음과 같습니다

L_branch = Sequential() 
L_branch.add(Dense(10, input_shape = (4,) , activation = 'relu')) 
L_branch.add(BatchNormalization()) 

R_branch = Sequential() 
R_branch.add(Embedding(1000, 64, input_length=5)) 

final_branch.add(Merge([L_branch, R_branch], mode = 'concat')) 

하지만 당신은 다른의 차원으로 레이어를 병합 할 수 없기 때문에이 작동하지 않습니다.

추신 : 죄송합니다, 영어는 제 모국어가 아니며 제 문제를 이해하시기 바랍니다.

감사합니다.

+0

이 병합 된 레이어의 예상 출력 모양은 무엇입니까? –

답변

3

Flatten 레이어를 사용하십시오.

L_branch = Sequential() 
L_branch.add(Dense(10, input_shape = (4,) , activation = 'relu')) 
L_branch.add(BatchNormalization()) 

R_branch = Sequential() 
R_branch.add(Embedding(1000, 64, input_length=5)) 
R_branch.add(Flatten()) # <-- 

final_branch = Sequential() # <-- 
final_branch.add(Merge([L_branch, R_branch], mode = 'concat')) 
+0

대단히 감사합니다! –

+1

이 줄에 - final_branch.add (병합 ([L_branch, R_branch], mode = 'concat')) Keras 2.0.1이 경고를 던졌습니다 : UserWarning :'Merge' 레이어는 더 이상 사용되지 않으며 08/2017. 대신에'keras.layers.merge'의 레이어를 사용하십시오. 'add','concatenate' 등 –