2017-05-25 72 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许可。

它还实现了高斯过程贝叶斯优化和一些其他技术,如学习曲线预测,这节省了大量的时间。