APP下载

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

消息来源:baojiabao.com 作者: 发布时间:2026-06-29

报价宝综合消息资源|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=

""

, reserved=

"["", "", ""]"

)



创建词表后,我们就能继续构建神经网络模型。如下将从模型仓库中导入一个标准的 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 词嵌入表征,它是一种顶级的英语词嵌入方法:



>>>

glove = nlp.embedding.create(

"glove"

, source=

"glove.6B.50d"

)

# Obtain vectors for "baby" in the GloVe word embedding


>>>

type(glove[

"baby"

])
<

class

"

mxnet

.

ndarray

.

ndarray

.

NDArray

">
>>>

glove

["

baby

"].

shape


(

50

,)








本文为机器之心编译,

转载请联系本公众号获得授权



?------------------------------------------------


加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com


投稿或寻求报道:editor@jiqizhixin.com


广告 & 商务合作:bd@jiqizhixin.com




2018-04-27 22:32:00

相关文章