2016-08-21 2 views
3

En supposant que je forme le réseau de neurones ci-dessous pour un problème de classification binaire:Comment améliorer un réseau neuronal basé sur Keras en utilisant AdaBoost?

model = Sequential() 
model.add(Dense(21, input_dim=19, init='uniform', activation='relu')) 
model.add(Dense(80, init='uniform', activation='relu')) 
model.add(Dense(80, init='uniform', activation='relu')) 
model.add(Dense(1, init='uniform', activation='sigmoid')) 
# Compile model 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 
# Fit the model 
model.fit(x2, training_target, nb_epoch=10, batch_size=32, verbose=0,validation_split=0.1, shuffle=True,callbacks=[hist]) 

Comment pourrais-je améliorer le réseau de neurones en utilisant AdaBoost? Est-ce que keras a des commandes pour ça?

Répondre

1

Keras n'implémente pas adaboost. Cependant, les modèles Keras sont compatibles avec scikit-learn, donc vous pouvez probablement utiliser AdaBoostClassifier à partir de là: link. Utilisez votre model comme base_estimator après l'avoir compilé, et fit l'instance AdaBoostClassifier au lieu de model. De cette façon, cependant, vous ne pourrez pas utiliser les arguments que vous passez à fit, tels que le nombre d'époques ou la taille de lot, donc les valeurs par défaut seront utilisées. Si les valeurs par défaut ne sont pas suffisantes, vous devrez peut-être créer votre propre classe qui implémente l'interface scikit-learn au-dessus de votre modèle et passe les arguments appropriés à fit.

+0

Salut, merci pour votre réponse. Quand j'insère: 'bdt = AdaBoostClassifier (base_estimator = modèle)' 'bdt.fit (x2, training_target)' où model est mon réseau compilé keras, il me donne l'erreur: * TypeError: Impossible de cloner l'objet ' '(type ): il ne semble pas être un estimateur scikit-learn car il n'implémente pas les méthodes' get_params '. * – ishido

+0

Apparemment, par eux-mêmes Les classificateurs keras ne sont pas compatibles avec scikit-learn. Voir cet article pour savoir comment les faire fonctionner ensemble: https://keras.io/scikit-learn-api/ – Ishamael

0

Apparemment, les réseaux de neurones ne sont pas compatibles avec le sklearn Adaboost, voir https://github.com/scikit-learn/scikit-learn/issues/1752

+0

Bienvenue dans Stack Overflow! Ceci est une limite [réponse à la connexion uniquement] (// meta.stackexchange.com/q/8231). Vous devez développer votre réponse pour inclure autant d'informations ici, et utilisez le lien uniquement pour référence. –