2017-05-25 70 views
3

我正在尋找一個直接在Tensorflow(不是Keras或Tflearn)中編寫的代碼的超參數調諧包。你能提出一些建議嗎?Tensorflow的超參數調諧

回答

4

通常,您不需要將超參數優化邏輯與優化模型結合使用(除非您的hyperparemeter優化邏輯針對您正在培訓的模型類型,在這種情況下,您需要告訴我們一點更多)。有幾種可用於該任務的工具和軟件包。 Here是關於這個話題的一篇很好的論文,而here是一個比較實用的博客文章。

  • hyperopt實現隨機搜索和parzen估計器優化樹。
  • Scikit-Optimize實現了一些其他的,包括高斯過程貝葉斯優化。
  • SigOpt爲超參數優化提供了一種方便的服務(儘管爲學生和研究人員提供免費層級和額外津貼)。它基於Yelp的MOE,它是開源的(雖然發佈的版本似乎沒有太多更新),理論上可以單獨使用,儘管它需要一些額外的努力。
  • Spearmint也是一個常用的軟件包,也是開源的,但不是免費的商業用途(雖然你可以回落到less restrictive older version)。它看起來很不錯,但不是非常活躍,可用的版本與Python 3不兼容(即使已經提交pull請求來解決這個問題)。
  • BayesOpt似乎是貝葉斯優化的黃金標準,但它主要是C++,並且Python界面看起來沒有很多文檔。

出的這些,我只有真正(即,與一個真正的問題)使用hyperopt與TensorFlow,並沒有花太多精力。這個API在某些方面有點奇怪,文檔也不是很徹底,但它確實有效並且似乎處於積極的發展之中,更多的優化算法和適應(例如專門用於神經網絡)可能會出現。但是,正如前面鏈接的博客文章中所建議的那樣,Scikit-Optimize可能同樣好,如果SigOpt適合你,它看起來很容易使用。

+0

我是這個DNN的新手。但我用scikit-learn(傳統ML)做了一些參數網格搜索。我的問題是:DNN中的網格搜索需要太多的計算能力,是否實用? –

+0

@scotthuang看看[本文](https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf)。除了描述其他幾種方法之外,其中一個結論是即使進行隨機搜索也可能更有效,因爲通常只有一小部分超參數在模型的性能中起着重要作用。 – jdehesa

3

我想再添加一個庫到@ jdehesa的列表中,我已經在我的研究中應用了它,特別是在tensorflow中。這是hyper-engine,Apache 2.0許可。

它還實現了高斯過程貝葉斯優化和一些其他技術,如學習曲線預測,這節省了大量的時間。