Hyperopt ist ein automatisches Optimierungsframework für Hyperparameter. Es scheint hauptsächlich für die Optimierung von Hyperparametern beim maschinellen Lernen verwendet zu werden.
Lassen Sie uns zuerst die Bibliothek installieren. Sie können es mit pip install hyperopt </ font> installieren.
Diesmal
x^2+y^2+z^2
Optimieren wir das Minimierungsproblem von.
Definieren wir zunächst die Zielfunktion.
#Zielfunktion einstellen
def objective_hyperopt(args):
x, y, z = args
return x ** 2 + y ** 2 + z ** 2
Stellen Sie zunächst den Suchraum für die zu optimierenden Parameter ein. Verwenden Sie dann fmin (), um die Suche zu starten. Legen Sie die Anzahl der Suchvorgänge mit dem Argument max_evals fest.
#Optimiert mit Hyperopt
def hyperopt_exe():
space = [
hp.uniform('x', -100, 100),
hp.uniform('y', -100, 100),
hp.uniform('z', -100, 100)
]
#Ein Objekt zum Aufzeichnen des Suchstatus
trials = Trials()
#Beginnen Sie mit der Erkundung
best = fmin(objective_hyperopt, space, algo=tpe.suggest, max_evals=500, trials=trials)
Wenn Sie das Endergebnis wissen möchten, fügen Sie Folgendes hinzu.
#Das Ergebnis ausgeben
print(best)
Lassen Sie uns die gesuchten Informationen aus dem Testobjekt abrufen. Sie können die Parameter und Zielfunktionswerte für jeden Versuch anzeigen, indem Sie Folgendes hinzufügen.
#Untersuchen Sie den Suchvorgang
for i, n in zip(trials.trials, range(500)):
vals = i['misc']['vals']
result = i['result']['loss']
print('vals:', vals, 'result:', result)
Der Code lautet diesmal wie folgt.
# -*- 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
#Stellen Sie die Zielfunktion für Hyperopt ein
def objective_hyperopt(args):
x, y, z = args
return x ** 2 + y ** 2 + z ** 2
#Optimiert mit Hyperopt
def hyperopt_exe():
#Suchraumeinstellungen
space = [
hp.uniform('x', -100, 100),
hp.uniform('y', -100, 100),
hp.uniform('z', -100, 100)
]
#Ein Objekt zum Aufzeichnen des Suchstatus
trials = Trials()
#Beginnen Sie mit der Erkundung
best = fmin(objective_hyperopt, space, algo=tpe.suggest, max_evals=500, trials=trials)
#Das Ergebnis ausgeben
print(best)
epoches = []
values = []
best = 100000
#Untersuchen Sie den Suchvorgang
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)
#Zeichnen Sie ein Diagramm
plt.plot(epoches, values, color="red")
plt.title("hyperopt")
plt.xlabel("trial")
plt.ylabel("value")
plt.show()
if __name__ == '__main__':
hyperopt_exe()
Die Figur des Ergebnisses dieses Experiments ist wie folgt. Es ist in einem frühen Stadium konvergiert.
Funktionsoptimierung mit Hyperopt Python: Hyperparameter für maschinelles Lernmodell mit Hyperopt auswählen