Hyperopt est un framework d'optimisation automatique des hyper paramètres. Il semble être principalement utilisé pour le réglage des hyper paramètres de l'apprentissage automatique.
Tout d'abord, installons la bibliothèque. Vous pouvez l'installer avec pip install hyperopt </ font>.
Cette fois
x^2+y^2+z^2
Optimisons le problème de minimisation de.
Tout d'abord, définissons la fonction objectif.
#Définir la fonction objectif
def objective_hyperopt(args):
x, y, z = args
return x ** 2 + y ** 2 + z ** 2
Commençons par définir l'espace de recherche pour les paramètres à optimiser. Puis utilisez fmin () pour lancer la recherche. Définissons le nombre de recherches avec l'argument max_evals.
#Optimisé avec hyperopt
def hyperopt_exe():
space = [
hp.uniform('x', -100, 100),
hp.uniform('y', -100, 100),
hp.uniform('z', -100, 100)
]
#Un objet pour enregistrer l'état de la recherche
trials = Trials()
#Commencer l'exploration
best = fmin(objective_hyperopt, space, algo=tpe.suggest, max_evals=500, trials=trials)
Si vous voulez connaître le résultat final, ajoutez ce qui suit.
#Sortir le résultat
print(best)
Récupérons les informations recherchées à partir de l'objet trial. Vous pouvez afficher les paramètres et les valeurs de fonction objectif pour chaque essai en ajoutant ce qui suit.
#Examiner le processus de recherche
for i, n in zip(trials.trials, range(500)):
vals = i['misc']['vals']
result = i['result']['loss']
print('vals:', vals, 'result:', result)
Le code cette fois est le suivant.
# -*- coding: utf-8 -*-
import hyperopt
from hyperopt import hp
from hyperopt import fmin
from hyperopt import tpe
from hyperopt import Trials
import matplotlib.pyplot as plt
#Définir la fonction objectif pour hyperopt
def objective_hyperopt(args):
x, y, z = args
return x ** 2 + y ** 2 + z ** 2
#Optimisé avec hyperopt
def hyperopt_exe():
#Paramètres de l'espace de recherche
space = [
hp.uniform('x', -100, 100),
hp.uniform('y', -100, 100),
hp.uniform('z', -100, 100)
]
#Un objet pour enregistrer l'état de la recherche
trials = Trials()
#Commencer l'exploration
best = fmin(objective_hyperopt, space, algo=tpe.suggest, max_evals=500, trials=trials)
#Sortir le résultat
print(best)
epoches = []
values = []
best = 100000
#Examiner le processus de recherche
for i, n in zip(trials.trials, range(500)):
if best > i['result']['loss']:
best = i['result']['loss']
epoches.append(n+1)
values.append(best)
vals = i['misc']['vals']
result = i['result']['loss']
print('vals:', vals, 'result:', result)
#Dessinez un graphique
plt.plot(epoches, values, color="red")
plt.title("hyperopt")
plt.xlabel("trial")
plt.ylabel("value")
plt.show()
if __name__ == '__main__':
hyperopt_exe()
Le chiffre du résultat de cette expérience est le suivant. Il a convergé à un stade précoce.
Optimisation des fonctions utilisant Hyperopt Python: sélectionnez des hyper paramètres pour le modèle d'apprentissage automatique avec Hyperopt
Recommended Posts