A Hyperopt é uma biblioteca Python para otimização em série e paralelo em espaços de pesquisa desajeitados, que podem incluir dimensões de valor real, discreto e condicional.
Instale hiperopt do Pypi
pip install hyperoptPara executar seu primeiro exemplo
# define an objective function
def objective ( args ):
case , val = args
if case == 'case 1' :
return val
else :
return val ** 2
# define a search space
from hyperopt import hp
space = hp . choice ( 'a' ,
[
( 'case 1' , 1 + hp . lognormal ( 'c1' , 0 , 1 )),
( 'case 2' , hp . uniform ( 'c2' , - 10 , 10 ))
])
# minimize the objective over the space
from hyperopt import fmin , tpe , space_eval
best = fmin ( objective , space , algo = tpe . suggest , max_evals = 100 )
print ( best )
# -> {'a': 1, 'c2': 0.01420615366247227}
print ( space_eval ( space , best ))
# -> ('case 2', 0.01420615366247227} Se você é um desenvolvedor e deseja contribuir, siga estas etapas.
Crie uma conta no Github se você ainda não tiver uma.
Garra o repositório do projeto: clique no botão 'Fork' próximo à parte superior da página. Isso cria uma cópia do código na sua conta na conta de usuário do GitHub. Para mais detalhes sobre como bifurcar um repositório, consulte este guia.
Clone o garfo do repositório hyperopt da sua conta do GitHub para o disco local:
git clone https://github.com/ < github username > /hyperopt.git
cd hyperopt Crie ambiente com:
$ python3 -m venv my_env ou $ python -m venv my_env ou com conda:
$ conda create -n my_env python=3
Ative o ambiente:
$ source my_env/bin/activate
ou com conda:
$ conda activate my_env
Instale dependências para extras (você precisará que estes executem Pytest): Linux/Unix: $ pip install -e '.[MongoTrials, SparkTrials, ATPE, dev]'
ou janelas:
pip install -e .[MongoTrials]
pip install -e .[SparkTrials]
pip install -e .[ATPE]
pip install -e .[dev]Adicione o controle remoto a montante. Isso economiza uma referência ao principal repositório de hiperopt, que você pode usar para manter seu repositório sincronizado com as últimas alterações:
$ git remote add upstream https://github.com/hyperopt/hyperopt.git
Agora você deve ter uma instalação funcional do Hyperopt e seu repositório Git configurado corretamente. As próximas etapas agora descrevem o processo de modificação de código e envio de um PR:
Sincronize sua filial mestre com o ramo mestre a montante:
git checkout master
git pull upstream masterCrie uma filial de recursos para manter suas mudanças de desenvolvimento:
$ git checkout -b my_feature
e comece a fazer alterações. Sempre use um ramo de recursos. É uma boa prática nunca trabalhar no ramo principal!
Recomendamos usar o Black para formatar seu código antes de enviar um PR instalado automaticamente na Etapa 6.
Depois, depois de se comprometer, verifique se os ganchos git são ativados (o PyCharm, por exemplo, tem a opção de omiti -los). Isso pode ser feito usando o pré-compromisso, que é instalado automaticamente na Etapa 6, como segue:
pre-commit installIsso será executado em preto automaticamente quando você se compromete em todos os arquivos que você modificou, falhando se houver arquivos que precisam ser apagados. Caso Black não execute execute o seguinte:
black {source_file_or_directory}Desenvolva o recurso em sua filial de recursos no seu computador, usando o GIT para fazer o controle da versão. Quando terminar a edição, adicione arquivos alterados usando o Git Add e o Git Commit:
git add modified_files
git commit -m " my first hyperopt commit " Os testes para este projeto usam pytest e podem ser executados chamando pytest .
Registre suas alterações no Git e empurre as alterações na sua conta do GitHub com:
git push -u origin my_featureObserve que as dependências de dev requerem o Python 3.6+.
Atualmente, três algoritmos são implementados no Hyperopt:
A Hyperopt foi projetada para acomodar algoritmos de otimização bayesiana com base em processos gaussianos e árvores de regressão, mas estes não são implementados no momento.
Todos os algoritmos podem ser paralelos de duas maneiras, usando:
A documentação da hiperopt pode ser encontrada aqui, mas ainda está em parte hospedada no wiki. Aqui estão alguns links rápidos para as páginas mais relevantes:
Veja projetos usando o Hyperopt no wiki.
Anúncios
Discussão
Se você usar este software para pesquisa, cite o artigo (http://proecedings.mlr.press/v28/bergstra13.pdf) da seguinte maneira:
Bergstra, J., Yamins, D., Cox, DD (2013) Fazendo uma ciência da pesquisa de modelos: otimização de hiperparâmetro em centenas de dimensões para arquiteturas de visão. Tproc. da 30ª Conferência Internacional sobre Aprendizagem de Machine (ICML 2013), junho de 2013, pp. I-115 para I-23.
Este projeto recebeu apoio de