2017-01-30 2 views
2

Ich benutze Keras und ich versuche, zwei verschiedene Schichten in einen Vektor zu verketten (erste Werte des Vektors wären Werte der ersten Schicht, und der andere Teil wäre die Werte der zweiten Schicht). Einer dieser Layer ist ein Density-Layer und der andere Layer ist ein Embedding-Layer.Keras: Wie eine dichte Schicht und eine Einbettungsschicht verschmelzen

Ich weiß, wie zwei Einbettungsschichten oder zwei dichte Schichten zusammengeführt werden, aber ich weiß nicht, wie eine Einbettungsschicht und eine dichte Schicht zusammengeführt werden (Dimensionsproblem).

Ein einfaches Beispiel würde wie folgt sein:

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')) 

Aber das wird nicht funktionieren, weil Sie nicht Schichten mit unterschiedlichen Dimensionalitäten verschmelzen können.

PS: Sorry, Englisch ist nicht meine Muttersprache und ich hoffe, Sie werden mein Problem verstehen.

Mit freundlichen Grüßen.

+0

Wie ist die Form der erwarteten Ausgabe von dieser gemischten Ebene? –

Antwort

3

Verwenden Sie Flatten Schicht.

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

Vielen Dank! –

+1

Für diese Zeile - final_branch.add (Merge ([L_branch, R_branch], mode = 'concat')) Das Keras 2.0.1 löst diese Warnung aus: UserWarning: Der 'Merge' Layer ist veraltet und wird nach 08/2017. Verwenden Sie stattdessen Ebenen von 'keras.layers.merge', z. 'add',' concatenate' usw. –

Verwandte Themen