2017-10-07 4 views
0

J'essaie de faire un peu d'apprentissage supervisé en utilisant scikit-learn MLPRegressor. Je veux savoir quel est le levier des nombres d'époque dans l'apprentissage supervisé.Comment définir les numéros d'époque dans scikit-learn mlpregressor?

Mais quand je mets le MLP comme ceci:

mlp = MLPRegressor(max_iter=100, learning_rate_init=0.1) 

puis ceci:

mlp = MLPRegressor(max_iter=200, learning_rate_init=0.1) 

puis ceci:

mlp = MLPRegressor(max_iter=500, learning_rate_init=0.1) 

Les scores de prédiction restent les mêmes. Je ne sais pas si c'est correct ou non d'utiliser max_iter pour définir les nombres d'époque, car les scores de prédiction sont constants bien que je change les nombres de max_iter. Mais quand je change le taux d'apprentissage, les scores sont modifiés, donc il y a des effets de levier d'apprentissage.

Quelqu'un peut-il aider? merci

Répondre

2

L'utilisation de max_iter est en effet la bonne façon de limiter le nombre d'époques. De la documentation MLPRegressor:

max_iter: int, en option, par défaut 200 Nombre maximum d'itérations. Le solveur itère jusqu'à la convergence (déterminée par 'tol') ou ce nombre d'itérations. Pour les solveurs stochastiques ('sgd', 'adam'), notez que cela détermine le nombre d'époques (combien de fois chaque point de données sera utilisé), et non le nombre d'étapes de gradient.

Notez que leur mise en œuvre a également un contrôle de convergence par rapport au paramètre tol, à savoir, lorsque le coût entre deux itérations change moins tol, l'apprentissage sera arrêté. Par défaut, tol est défini sur 0,0001 (10e-4), ce qui peut ou non être trop tolérant pour votre cas d'utilisation/vos données d'entraînement.

Dans votre cas, il semble que cette précision soit atteinte avant même 100 itérations (max_iter=100).

+0

merci pour l'information. Dans mon cas, ce n'est même pas changer en 10, 20, 30 itérations. il reste le même que 100, 500 ou 1000 itérations – sang