Содержимое объекта Trials() в hyperopt

Этот запрос относится к использованию испытаний в качестве аргумента в fmin.

trials = Trials()
best = fmin(objective, space=hp.uniform('x', -10, 10), algo=tpe.suggest,
    max_evals=100, trials=trials)

В документации говорится, что объект trials получил списки, такие как trials.trials, trials.results, trials.losses() и trials.statuses ().

Тем не менее, я видел случаи использования, такие как trials.best_trial и trials.trial_attachments, которые не были упомянуты в документе.

Теперь мне интересно, как получить список всего содержимого объекта испытаний? Тип объекта - hyperopt.base.Trials.

0 ответов

Согласно Hyperopt кода: `Trials - перечень документов, в том числе по крайней мере поддокументами

['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)`

Это лишь частичный ответ моего исследования кода Hyperopt:

существует._dynamic_trials, в котором хранится информация, используемая при оптимизации.

Если вы хотите просто выгрузить все содержимое на экран, вы можете сделать что-то вроде этого. Вот как вы могли бы использовать эту стратегию наTrials объект:

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)

Это напечатает все свойства и методы 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>>

Но мне удобнее посмотреть исходный код. Есть несколько объектов, заявленных в__init__ функция, то есть набор свойств, объявленных с использованием @propertyдекоратор. Все методыdefс.

Не уверен, как настроена ваша среда, но файл хранится в моей среде conda по адресу ..\env\Lib\site-packages\yperopt\base.py. class Trials(object) следует объявлять в строке 228.

Другие вопросы по тегам