日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其他語言接口

Font Tian translated this article on 23 December 2017

兩種接口策略

基本上有兩種方法將 hyperopt 與其他語言進行連接:

  • 你可以為你的成本函數中編寫一個Python包裝器,這個函數不是用Python編寫的(用Python調用其它語言,譯者注)
  • 您可以將 hyperopt-mongo-worker 替換為直接使用JSON與MongoDB通信。
  • 包裝對非Python代碼的調用

    使用hyperopt優化非python函數的參數(例如外部可執行文件)的最簡單方法是在外部可執行文件周圍編寫一個Python函數包裝器。假設你有一個可執行文件 foo 需要一個整數的命令行參數 --n 并打印出一個分數,你可以像這樣包裝它:

    import subprocessdef foo_wrapper(n):# Optional: write out a script for the external executable# (we just call foo with the argument proposed by hyperopt)proc = subprocess.Popen(['foo', '--n', n], stdout=subprocess.PIPE)proc_out, proc_err = proc.communicate()# <you might have to do some more elaborate parsing of foo's output here>score = float(proc_out)return score

    當然,要優化 n 參數給 foo 你也需要調用 hyperopt.fmin ,并且定義搜索空間。我覺得你會想在Python中做這個部分。

    from hyperopt import fmin, hp, randombest_n = fmin(foo_wrapper, hp.quniform('n', 1, 100, 1), algo=random.suggest)print best_n

    當這里的搜索空間大于簡單的搜索空間時,您可能需要或者必須包裝函數來將其參數轉換為外部可執行文件的某種 配置文件/腳本。

    這種方法與MongoTrials完全兼容。

    直接與MongoDB進行通信

    通過直接與MongoDB進行通信,可以更直接地與搜索過程(使用 MongoTrials 時)進行交互,就像 hyperopt-mongo-worker 一樣。該內容已經超過了本教程的范圍,但Hannes Schultz(@ Contemporaryer)的hyperopt與他的MDBQ項目可以作為有不錯的參考,這是一個獨立的基于MongoDB的任務隊列:

    https://github.com/temporaer/MDBQ/blob/master/src/example/hyperopt_client.cpp

    查看代碼以及 hyperopt / mongoexp.py 的內容,了解工作進程如何在工作隊列中保留作業,并將結果存儲回MongoDB。

    總結

    以上是生活随笔為你收集整理的hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。