资源 | DMLC团队发布GluonCV和GluonNLP:两种简单易用的DL工具箱

选自 Gluon

机器之心编译

参与:思源、李亚洲

近日,DMLC 发布了简单易用的深度学习工具箱 GluonCV 和 GluonNLP,它们分别为计算机视觉和自然语言处理提供了顶级的算法实现与基本运算。本文简要介绍了这两个工具箱,并提供了基本的使用示例,更多详细的内容请查看它们的原文档。

  • GluonCV 文档地址:http://gluon-cv.mxnet.io
  • GluonNLP 文档地址:http://gluon-nlp.mxnet.io/

自去年以来,MXNet 的动态图接口 Gluon 凭借着它的简单易用、并行效率高和节省显存等特点,成为了非常受欢迎的一个开源工具。此外,Gluon 最大的特点就是文档和教程齐全,李沐及 MXNet 团队还发布了一系列「动手学深度学习」的公开课。

GluonCV 和 GluonNLP 继承了 Gluon 的优良传统,它们都能使用简单易用的 API 构建复杂的深度神经网络。此外,这两个项目目前都处于开发的早期阶段,它们的更新频率会比较高。因此,各位读者对该项目的贡献将极大地完善用户体验和工具性能。

  • GluonCV 项目地址:https://github.com/dmlc/gluon-cv
  • GluonNLP 项目地址:https://github.com/dmlc/gluon-nlp

GluonCV 提供了计算机视觉领域顶级深度学习算法的实现。设计上,GluonCV 是为了帮助工程师、研究人员、学生快速的做出产品原型、验证新思路、学习计算机视觉。

1. 训练脚本从而重现最新论文中的顶级结果;

2. 大量的预训练模型;

3. 细心设计的 API,便于理解实现;

4. 社区支持。

GluonNLP 提供了 NLP 领域顶级深度学习模型的实现,且建立了文本数据管道和模型的模块。设计上,它同样也是为了让工程师、研究员和学生能快速的实现研究思路,做出产品原型。该工具箱提供以下四大特征:

1. 训练脚本来重现研究论文中的顶级结果;

2. 通用 NLP 任务的预训练模型;

3. 仔细设计的 API,极大的减少了实现的复杂性;

4. 社区支持。

安装

安装 MXNET

GluonCV 和 GluonNLP 都依赖最新版的 MXNet,最简单的方式是通过 pip 安装 MXNet,运行下面的命令行将安装 CPU 版本的 MXNet。

pip install --pre --upgrade mxnet

安装 GluonCV

使用 pip 是安装 GluonCV 最简单的方式:

pip install gluoncv

当然,我们也可以使用 Git 复制 GluonCV 项目并在本地安装:

git clone https://github.com/dmlc/gluon-cvcd gluon-cv && python setup.py install --user

安装 GluonNLP

同样,通过以下 pip 命令安装 GluonNLP 也是最简单的:

pip install gluonnlp

这两个工具目前都提供了案例或教程,但 GluonNLP 假定了用户对深度学习与 NLP 有基础理解,GluonCV 的教程假定用户对深度学习与计算机视觉有基础了解。以下简要展示了这两个工具的使用案例。

以下的案例将使用 20 层的残差网络在 CIFAR10 上从头开始训练,我们这里只展示了模型架构和最优化方法。使用 GluonCV 首先需要导入这个库:

import numpy as np
import mxnet as mx

from mxnet import gluon, nd
from mxnet import autograd as ag
from mxnet.gluon import nn

from gluoncv.model_zoo import get_model

选择模型架构可以简单地从已有模型中导入,以下将从 GluonCV 的模型库中导入用于 CIFAR10 的 20 层残差网络:

# number of GPUs to use
num_gpus = 1
ctx = [mx.gpu(i) for i in range(num_gpus)]

# Get the model CIFAR_ResNet20_v1, with 10 output classes, without pre-trained weights
net = get_model('cifar_resnet20_v1', classes=10)
net.initialize(mx.init.Xavier(), ctx = ctx)

而剩下的优化方法及损失函数的配置就可以通过一般的 Gluon 接口完成,这同样也是非常简明和高效的使用方法。

# Learning rate decay factor
lr_decay = 0.1
# Epochs where learning rate decays
lr_decay_epoch = [80, 160, np.inf]

# Nesterov accelerated gradient descent
optimizer = 'nag'
# Set parameters
optimizer_params = {'learning_rate': 0.1, 'wd': 0.0001, 'momentum': 0.9}

# Define our trainer for net
trainer = gluon.Trainer(net.collect_params(), optimizer, optimizer_params)

loss_fn = gluon.loss.SoftmaxCrossEntropyLoss()

对于 GluonNLP 来说,一般的任务都可以分为加载数据、构建词表、搭建模型和加载词嵌入等。以下将针对这些步骤展示该自然语言处理库的简单使用过程。

首先,以下代码将导入 GluonNLP,并加载 Wikitext-2 数据集:

>>> import gluonnlp as nlp
>>> train = nlp.data.WikiText2(segment='train')
>>> train[0][0:5]
['=', 'Valkyria', 'Chronicles', 'III', '=']

随后,我们可以根据上面导入的数据集创建词表:

>>> vocab = nlp.Vocab(counter=nlp.data.Counter(train[0]))
>>> vocab
Vocab(size=33280, unk="<unk>", reserved="['<pad>', '<bos>', '<eos>']")

创建词表后,我们就能继续构建神经网络模型。如下将从模型仓库中导入一个标准的 RNN 语言模型,并将其应用到上面加载的数据集上:

>>> model = nlp.model.language_model.StandardRNN('lstm', len(vocab),
...                                              200, 200, 2, 0.5, True)
>>> model
StandardRNN(
  (embedding): HybridSequential(
    (0): Embedding(33280 -> 200, float32)
    (1): Dropout(p = 0.5, axes=())
  )
  (encoder): LSTM(200 -> 200.0, TNC, num_layers=2, dropout=0.5)
  (decoder): HybridSequential(
    (0): Dense(200 -> 33280, linear)
  )
)

最后,加载词嵌入表征就能馈送到模型并进行训练。如下将加载 GloVe 词嵌入表征,它是一种顶级的英语词嵌入方法:

本文为机器之心编译,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

Java工程师转型AI的秘密法宝:深度学习框架Deeplearning4j | 回顾

深度学习是人工智能发展最为迅速的领域之一,Google、Facebook、Microsoft等巨头都围绕深度学习重点投资了一系列新兴项目,他们也一直在支持一些开...

52270
来自专栏AI研习社

Java 工程师转型 AI 的秘密法宝——深度学习框架 Deeplearning4j | 回顾

深度学习是人工智能发展最为迅速的领域之一,Google、Facebook、Microsoft 等巨头都围绕深度学习重点投资了一系列新兴项目,他们也一直在支持一些...

38940
来自专栏技术翻译

用Python从头开始构建一个简单的聊天机器人(使用NLTK)

我相信你一定听说过Duolingo:一款流行的语言学习应用。它以其创新的外语教学风格而广受欢迎,其概念很简单:一天五到十分钟的互动训练就足以学习一门语言。

1.1K10
来自专栏ATYUN订阅号

Kaggle的入门介绍:通过竞赛磨练机器学习技能

在数据科学领域,可用的资源非常的多:从Datacamp到Udacity再到KDnuggets,在网上有很多可以在线学习数据科学的地方。但是,如果你是一个喜欢在实...

44510
来自专栏PPV课数据科学社区

文本挖掘小探索:避孕药内容主题分析

作者:冯大福 舆情监测一直是众多品牌关注的地方,尤其品牌想知道在品牌推广,品牌策略,品牌广告中出现的问题,从而能进行策略上的改进,但是现在很多人都是读帖子,笔者...

37760
来自专栏AI研习社

资深算法工程师万宫玺:Java 工程师转型 AI 的秘密法宝——深度学习框架 Deeplearning4j | 分享总结

深度学习是人工智能发展最为迅速的领域之一,Google、Facebook、Microsoft 等巨头都围绕深度学习重点投资了一系列新兴项目,他们也一直在支持一些...

394100
来自专栏机器人网

最流行的机器学习R语言软件包大PK

The Data Incubator 中,有着最新的数据科学(data science)课程。其中大部分的课程都是基于企业和政府合作伙伴的需求而设立的。现在他们...

46160
来自专栏人工智能LeadAI

译文 | 与TensorFlow的第一次接触(一)

本人对一直对高性能网络服务器,分布式存储比较感兴趣,在BAT时也一直从事架构开发,并没有做过机器学习相关工作,平时喜欢阅读分析开源代码,到目前为止已分析完约8套...

35860
来自专栏PPV课数据科学社区

【学习】SPSS预测分析模型商用:应用关联规则模型提高超市销量--关联分析(购物篮)

前言 在数据挖掘项目中,数据理解常常不被重视。但其实数据理解在整个数据挖掘项目中扮演着非常重要的角色,可以说是整个项目的基石。在计算机领域有一句话,“Garba...

47040
来自专栏大数据挖掘DT机器学习

Python实现基于SVM的股票预测

核心 因为是分类算法,因此不像ARIMA一样预测的是时序。分类就要有东西可分,因此将当日涨记为1,跌记为0,作为分类的依据。使用历史数据作为训练数据。 处理数据...

73460

扫码关注云+社区

领取腾讯云代金券