2017-07-04 1 views
2

Modell:Fehler in den letzten Keras Schicht neuronaler Netzwerk

model = Sequential() 
act = 'relu' 
model.add(Dense(430, input_shape=(3,))) 
model.add(Activation(act)) 

model.add(Dense(256)) 
model.add(Activation(act)) 
model.add(Dropout(0.4)) 

model.add(Dense(148)) 
model.add(Activation(act)) 
model.add(Dropout(0.3)) 

model.add(Dense(1)) 
model.add(Activation('softmax')) 

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 
#model.summary() 

Fehler: Fehler bei der Prüfung target: erwartete activation_4 Form haben (keine, 1) bekam aber Array mit Form (1715, 2)

Der Fehler liegt in der letzten Schicht des neuronalen Netzwerks. Das neurale Netzwerk versucht zu klassifizieren, ob 2 Medikamente synergisch sind oder nicht. COMPLETE SOURCE CODE: https://github.com/tanmay-edgelord/Drug-Synergy-Models/blob/master/Drug%20Synergy%20NN%20Classifier.ipynb

Daten: https://github.com/tanmay-edgelord/Drug-Synergy-Models/blob/master/train.csv

+0

Verwenden des TensorFlow-Back-Ends –

Antwort

2

In Ihrem Code haben Sie die folgenden Zeilen:

y_binary = to_categorical(Y[:]) 
y_train = y_binary[:split] 
y_test = y_binary[split:] 

to_categorical verwandelt den Vektor in einen 1-Hot-Vektor. Da Sie also zwei Klassen haben, transformiert es jede Zahl in einen Vektor der Länge 2 (0 wird in [1,0] umgewandelt und 1 wird in [0,1] umgewandelt). So Ihre letzte Schicht muss definiert werden, wie folgt:

model.add(Dense(2)) 
model.add(Activation('softmax')) 

(beachten Sie, dass ich das 1 mit 2 ersetzt).

Verwandte Themen