使用NNI的scikit-learn以及Tensorflow分析

本文介绍了NNI工具在自动机器学习领域的应用,特别是在scikit-learn和TensorFlow中的超参数调优。通过NNI,可以方便地定义搜索空间,修改代码并配置Tuner,从而在不同环境中优化模型。NNI支持多种调优算法,提供Web UI展示实验结果,简化了深度学习和传统机器学习模型的调试流程。
摘要由CSDN通过智能技术生成

一、NNI简介

在这里插入图片描述
NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。
在这里插入图片描述

Supported Frameworks Tuning Algorithms Training Services
PyTorch TPE Local Machine
TensorFlow Random Search Remote Servers
Keras Anneal OpenPAI
MXNet Naive Evolution Kubeflow
Caffe2 SMAC FrameworkController on K8S (AKS etc.)
CNTK Batch
KerasChainer Grid Search
Theano Hyperband
Network Morphism
ENAS
Metis Tuner

使用场景

  • 在本地 Trial 不同的自动机器学习算法来训练模型。
  • 在分布式环境中加速自动机器学习(如:远程 GPU 工作站和云服务器)。
  • 定制自动机器学习算法,或比较不同的自动机器学习算法。
  • 在自己的机器学习平台中支持自动机器学习。

具体安装以及应用请参照官网

二、使用NNI对scikit-learn进行调参

scikit-learn (sklearn) 是数据挖掘和分析的流行工具。 它支持多种机器学习模型,如线性回归,逻辑回归,决策树,支持向量机等。 提高 scikit-learn 的效率是非常有价值的课题。
NNI 支持多种调优算法,可以为 scikit-learn 搜索最佳的模型和超参,并支持本机、远程服务器组、云等各种环境。

  1. 样例概述

样例使用了数字数据集,由 1797 张 8x8 的图片组成,每张图片都是一个手写数字。目标是将这些图片分到 10 个类别中。在此样例中,使用了 SVC 作为模型,并选择了一些参数,包括 “C”, “keral”, “degree”, “gamma” 和 “coef0”。 关于这些参数的更多信息,可参考这里

  1. 如何在 NNI 中使用 sklearn

只需要如下几步,即可在 sklearn 代码中使用 NNI。

  • 第一步,定义搜索空间

准备 search_space.json 文件来存储选择的搜索空间。 例如,不同的正则化值:

{
   
    "C": {
   "_type":"uniform","_value":[0.1, 1]},
}

如果要选择不同的正则化参数、核函数等,可以将其放进一个search_space.json文件中。

{
   
    "C": {
   "_type":"uniform","_value":[0.1, 1]},
    "keral": {
   "_type":"choice","_value":["linear", "rbf", "poly", "sigmoid"]},
    "degree": {
   "_type":"choice","_value":[1, 2, 3, 4]},
    "gamma": {
   
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hyperopt-sklearn是基于scikit-learn项目的一个子集,其全称是:Hyper-parameter optimization for scikit-learn,即针对scikit-learn项目的超级数优化工具。由于scikit-learn是基于Python的机器学习开源框架,因此Hyperopt-sklearn也基于Python语言。Hyperopt-sklearn的文档称:对于开发者而言,针对不同的训练数据挑选一个合适的分类器(classifier)通常是困难的。而且即使选好了分类器,后面的数调试过程也相当乏味和耗时。更严重的是,还有许多情况是开发者好不容易调试好了选定的分类器,却发现一开始的选择本身就是错误的,这本身就浪费了大量的精力和时间。针对该问题,Hyperopt-sklearn提供了一种解决方案。Hyperopt-sklearn支持各种不同的搜索算法(包括随机搜索、Tree of Parzen Estimators、Annealing等),可以搜索所有支持的分类器(KNeightborsClassifier、KNeightborsClassifier、SGDClassifier等)或者在给定的分类器下搜索所有可能的数配置,并评估最优选择。并且Hyperopt-sklearn还支持多种预处理流程,包括TfidfVectorizer,Normalzier和OneHotEncoder等。那么Hyperopt-sklearn的实际效果究竟如何?下表分别展示了使用scikit-learn默认数和Hyperopt-sklearn优化数运行的分类器的F-score分数,数据源来自20个不同的新闻组稿件。可以看到,经过优化的分类器的平均得分都要高于默认数的情况。另外,Hyperopt-sklearn的编码量也很小,并且维护团队还提供了丰富的考样例。 标签:Hyperopt

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值