Cette requête fait référence à l'utilisation d'essais comme argument dans fmin.
trials = Trials()
best = fmin(objective, space=hp.uniform('x', -10, 10), algo=tpe.suggest,
max_evals=100, trials=trials)
La documentation ( https://github.com/hyperopt/hyperopt/wiki/FMin ) indiquent que l'objet trial a des listes telles que trial.trials, trial.results, trial.losses () et trials.statuses() .
Cependant, j'ai vu des utilisations comme trials.best_trial et trials.trial_attachments qui n'ont pas été mentionnés dans le document.
Maintenant, je me demande comment obtenir une liste de tout le contenu de l'objet essais ? Le type d'objet est hyperopt.base.Trials final.
3 Réponses :
Ceci n'est qu'une réponse partielle de mon enquête sur le code Hyperopt:
il existe un ._dynamic_trials qui stocke les informations utilisées dans l'optimisation.
Merci d'avoir répondu cependant, je ne pense pas que vous ayez répondu à la question. Si vous pensez que oui, pourriez-vous modifier votre réponse pour la rendre plus claire? Consultez comment répondre pour en savoir plus.
l'a marqué comme une réponse partielle; est-ce mieux ou devrait-il s'agir d'un commentaire?
Si vous voulez simplement vider tout le contenu à l'écran, vous pouvez faire quelque chose comme ceci . Voici comment vous utiliseriez la stratégie sur un objet Trials :
obj.__class__ = <class 'hyperopt.base.Trials'>
obj.__delattr__ = <method-wrapper '__delattr__' of Trials object at 0x0000012880AA3108>
obj.__dict__ = {'_ids': set(), '_dynamic_trials': [], '_exp_key': None, 'attachments': {}, '_trials': []}
obj.__dir__ = <built-in method __dir__ of Trials object at 0x0000012880AA3108>
. . .
obj._ids = set()
obj._insert_trial_docs = <bound method Trials._insert_trial_docs of <hyperopt.base.Trials object at 0x0000012880AA3108>>
obj._trials = []
obj.aname = <bound method Trials.aname of <hyperopt.base.Trials object at 0x0000012880AA3108>>
Cela affichera toutes les propriétés et méthodes de l'objet Trials . Je ne vais pas tout inclure ici parce que c'est long, mais en voici quelques lignes:
from hyperopt import Trials
def dump(obj):
for attr in dir(obj):
if hasattr( obj, attr ):
print( "obj.%s = %s" % (attr, getattr(obj, attr)))
tpe_trials = Trials()
dump(tpe_trials)
Mais je trouve plus utile de regarder le code source. Il y a quelques propriétés déclarées sous la fonction __init__ , puis il y a un ensemble de propriétés déclarées en utilisant le décorateur @property . Les méthodes sont toutes def .
Je ne sais pas comment votre environnement est configuré, mais le fichier est stocké dans mon environnement conda à .. \ env \ Lib \ site -packages \ yperopt \ base.py . class Trials (object) doit être déclaré autour de la ligne 228.
J'obtiens l'erreur «AllTrialsFailed:». Pas certain de pourquoi.
Conformément au Code Hyperopt : `Essais - une liste de documents comprenant au moins des sous-documents
['spec'] - the specification of hyper-parameters for a job
['result'] - the result of Domain.evaluate(). Typically includes:
['status'] - one of the STATUS_STRINGS
['loss'] - real-valued scalar that hyperopt is trying to minimize
['idxs'] - compressed representation of spec
['vals'] - compressed representation of spec
['tid'] - trial id (unique in Trials list)`
Merci. Je n'ai pas pensé à examiner le code. C'est assez clair dans le code.