2017-07-25 1 views
-1

Ich arbeite an einem CNN-Modell und möchte ein neues kategorisches Feature vor der Dense-Ebene hinzufügen. Ich habe versucht, das Feature mit der abgeflachten Ausgabe der CNN-Ebene zu verketten, aber es sieht so aus, als ob die Verkettungsfunktion in Keras die Eingabe von Tensoren und nicht von Arrays erfordert. Wie soll ich vorgehen? Hier ist der Code, den ich versucht habe, so weit:Kategorisches Merkmal vor der dichten Schicht in Keras hinzufügen?

model = Sequential() 
model.add(Conv2D(128, (6, 6), padding='same')) 
model.add(Activation('relu')) 
model.add(Conv2D(128, (6, 6))) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 
model.add(Flatten()) 

Ich versuche Concatenate Funktion zu verwenden, aber es kann Tensoren kommen, wo, wie meine Funktion ein numpy Array von Form (1, 3). Jede Hilfe wäre willkommen.

+3

Willkommen bei SO. Damit andere Ihnen helfen können, lesen Sie bitte unter "So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel" https://stackoverflow.com/help/mcve – desertnaut

Antwort

1

Sie sollten ein neues Modell auf der Seite Ihres tatsächlichen Modells erstellen. Dieses zweite Modell wird Ihr numpy Array eingeben und tut nichts anderes.

Dann verketten Sie sie.

Like this ->

m1 = Sequential() 
m1.add(Conv2D(128, (6, 6), padding='same')) 
m1.add(Activation('relu')) 
m1.add(Conv2D(128, (6, 6))) 
m1.add(Activation('relu')) 
m1.add(MaxPooling2D(pool_size=(2, 2))) 
m1.add(Dropout(0.25)) 
m1.add(Flatten()) 

m2 = Sequential() 
m2.add(Input()) # Put needed infos to input your numpy array 
#Don't forget to flatten it if needed ? 

model = Sequential() 
model.add(Merge([m1,m2], mode='concat')) 
#Then add your final layer. 
#To train it, in place of the normal var X_train, you'll use [X_train,yournumpyarray] in model.train method 
+0

Vielen Dank @Pusheen. Ich war tatsächlich verwirrt im Verkettungsprozess (der nur die Tensoren verkettet) und wusste nicht, dass die Input-Funktion das Array zu einem Tensor ändert. – Nib

+0

Kein Problem, ich hatte ein ähnliches Problem vor einiger Zeit. Zögern Sie nicht, die Antwort zu akzeptieren, wenn es für Sie in Ordnung ist :) –

Verwandte Themen