加入收藏 | 设为首页 | 会员中心 | 我要投稿 52刷机网 (https://www.52shuaji.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 4G频道 > 通讯 > 正文

性能超过人类炼丹师,AutoGluon 低调开源

发布时间:2020-01-21 09:15:12 所属栏目:通讯 来源:网络整理
导读:性能超过人类炼丹师,AutoGluon 低调开源

(原标题:性能超过人类炼丹师,AutoGluon 低调开源)

自动机器学习效果能有多好?比如让 MobileNet1.0 backbone 的 YOLO3超过 ResNet-50 backbone 的 faster-rcnn 六个点?AutoGluon 的问世说明,人类炼丹师可能越来越不重要了。

近日,亚马逊正式推出了开源代码库 AutoGluon。开发者依靠仅仅几行代码,就可以编写出 AI 嵌入应用程序。

一个多月前,AutoGluon 在 GitHub 已经悄悄上线,但最近几天才正式公开发布。

开发者「Justin ho」抢先体验了一下 AutoGluon,以下是他的心得体会:

性能超过人类炼丹师,AutoGluon 低调开源

「ResNet-50 backbone + FasterRCNN 骑脸怎么输嘛。」

但,最终测试集成绩非常出人意料,AutoGluon 通过 NAS 搜索的结果直接高了六个点。

性能超过人类炼丹师,AutoGluon 低调开源


对此,李沐表示:

性能超过人类炼丹师,AutoGluon 低调开源

知乎用户 @Justin ho。

李沐在知乎上回应:

AutoML 使用大概15倍于单次训练的代价,得到的结果可能比手调的要好。这个主要是对于 CV 而言,尤其是 detection 模型,预计 GluonCV 里面模型很快赢来一大波提升。

AutoGluon 取了一个巧,我们目前只支持 GluonCV 和 GluonNLP 里面的任务,和额外的 Tabular 数据(因为一个小哥之前有过经验)。所以我们可以把以前的很有经验东西放进去来减小搜参空间,从而提升速度。

当然 AutoGluon 还是早期项目,我本来想是让团队再开发一些时间再公开。还有太多有意思的应用、算法、硬件加速可以做的。非常欢迎小伙伴能一起贡献。

AutoGluon:新特性

性能超过人类炼丹师,AutoGluon 低调开源

图解 AutoGluon。

AutoGluon 支持易使用和易扩展的 AutoML,并专注于涵盖图像、文本或表格数据的深度学习和实际应用。AutoGluon 适用于机器学习初学者和专家,能够使他们:

通过几行代码即可快速地为数据构建深度学习原型方案;

利用自动超参数微调、模型选择/架构搜索和数据处理;

无需专家知识即可自动使用深度学习 SOTA 方法;

轻松地提升现有定制模型和数据管道,或者根据用例自定义 AutoGluon。

支持功能

现在 AutoGluon 已经支持了以下一些应用:

表格预测:基于数据表中一些列的值预测其他列的值;

图像分类:识别图像中的主要对象;

对象检测:借助图像中的边界框检测多个对象;

文本分类:基于文本内容做出预测。

性能超过人类炼丹师,AutoGluon 低调开源

除了这些之外,AutoGluon 还可以进行神经架构搜索,使用起来较为简便。

怎样使用 AutoGluon 呢?官方文档中提供了示例代码,机器之心进行了节选:

示例代码

表格预测

对于用表格形式(存储为 CSV 文件等)来表示的标准数据集来说,AutoGluon 可以自动根据其他列的值来预测某一列值。只需要调用一次 fit(),就可以在标准的监督学习任务(包括分类和回归)中实现很高的准确性,而无需数据清洗、特征工程、超参数优化、模型选择等等繁琐的流程。

首先,导入 AutoGluon 中预测表格的相关 api。

import autogluon as ag from autogluon import TabularPrediction as task

加载数据(这里使用官方教程提供的数据集)。

train_data = task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv') train_data = train_data.head(500) # subsample 500 data points for faster demo print(train_data.head())

表格 train_data 中的每一行都对应单独的训练样本。在官方教程提供的数据集中,每一行对应单个人,并且表格列包含各种统计特征。

我们先来用这些特征预测一下某个人的收入是否超过5万美元,相关信息记录在该表的 class 列中。

性能超过人类炼丹师,AutoGluon 低调开源

然后进行训练:

dir = 'agModels-predictClass' # specifies folder where to store trained models predictor = task.fit(train_data=train_data, label=label_column, output_directory=dir)

加载测试集并测试:

test_data = task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv') y_test = test_data[label_column] # values to predict test_data_nolab = test_data.drop(labels=[label_column],axis=1) # delete label column to prove we're not cheating print(test_data_nolab.head())

图像分类

和表格预测任务类似,AutoGluon 可以自动对图像进行分类,并使用 GPU 进行训练。

首先加载图像分类 api:

import autogluon as agfrom autogluon import ImageClassification as task

然后只需要短短几行代码就可以构建一个图像分类器(数据集为教程自带数据集):

classifier = task.fit(dataset,epochs=10,ngpus_per_trial=1,verbose=False)

打印训练结果中最好的:

print('Top-1 val acc: %.3f' % classifier.results['best_reward'])

对单一图像进行测试,这里的 ag.get_gpu_count() 用于检测是否有 GPU,如有则大于0。

# skip this if training FashionMNIST on CPU.if ag.get_gpu_count() > 0: image = 'data/test/BabyShirt/BabyShirt_323.jpg'  ind, prob = classifier.predict(image) print('The input picture is classified as [%s], with probability %.2f.' % (dataset.init().classes[ind.asscalar()], prob.asscalar()))

在测试集上测试并打印结果:

test_acc = classifier.evaluate(test_dataset) print('Top-1 test acc: %.3f' % test_acc)

神经架构搜索

对于 AutoML 的框架来说,神经架构搜索是很重要的一个应用。近来,流行的 NAS 方法,如 ENAS 和 ProxylessNAS 都通过构建一个超网络(supernet)并在不同的架构之间共享权重,从而加速搜索速度。

性能超过人类炼丹师,AutoGluon 低调开源

ProxylessNAS 架构。

AutoGluon 也提供了相应的功能。

以「为硬件设备搜索合适的神经网络架构」为例:

首先,导入相关 api。

import autogluon as ag import mxnet as mx import mxnet.gluon.nn as nn

(编辑:52刷机网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读