Gluon 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Gluon 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Gluon 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Gluon 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Gluon 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Python
操作系统 跨平台
软件类型 开源软件
开源组织 微软
地区 不详
投 递 者 红薯
适用人群 未知
收录时间 2017-10-21

软件简介

Gluon 是微软联合亚马逊推出的一个开源深度学习库,这是一个清晰、简洁、简单但功能强大的深度学习 API,该规范可以提升开发人员学习深度学习的速度,而无需关心所选择的深度学习框架。Gluon API 提供了灵活的接口来简化深度学习原型设计、创建、训练以及部署,而且不会牺牲数据训练的速度。

Gluon 规范已经在 Apache MXNet 中实现,只需要安装最新的 MXNet 即可使用。推荐使用 Python 3.3 或者更新版本。

主要优势包括:

  • 代码简单,易于理解

  • 灵活,命令式结构: 不需要严格定义神经网络模型,而是将训练算法和模型更紧密地结合起来,开发灵活

  • 动态图: Gluon 可以让开发者动态的定义神经网络模型,这意味着他们可以在运行时创建模型、结构,以及使用任何 Python 原生的控制流

  • 高性能: Gluon 所提供的这些优势对底层引擎的训练速度并没有任何影响

示例代码:

import mxnet as mx
from mxnet import gluon, autograd, ndarray
import numpy as np

train_data = mx.gluon.data.DataLoader(mx.gluon.data.vision.MNIST(train=True, 
			transform=lambda data, label: (data.astype(np.float32)/255, label)),
            batch_size=32, shuffle=True)
test_data = mx.gluon.data.DataLoader(mx.gluon.data.vision.MNIST(train=False, 
			transform=lambda data, label: (data.astype(np.float32)/255, label)),
            batch_size=32, shuffle=False)                     

# First step is to initialize your model
net = gluon.nn.Sequential()
# Then, define your model architecture
with net.name_scope():
    net.add(gluon.nn.Dense(128, activation="relu")) # 1st layer - 128 nodes
    net.add(gluon.nn.Dense(64, activation="relu")) # 2nd layer – 64 nodes
    net.add(gluon.nn.Dense(10)) # Output layer

# We start with random values for all of the model’s parameters from a
# normal distribution with a standard deviation of 0.05
net.collect_params().initialize(mx.init.Normal(sigma=0.05))

# We opt to use softmax cross entropy loss function to measure how well the # model is able to predict the correct answer
softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss()

# We opt to use the stochastic gradient descent (sgd) training algorithm
# and set the learning rate hyperparameter to .1
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .1})

epochs = 10
for e in range(epochs):
    for i, (data, label) in enumerate(train_data):
        data = data.as_in_context(mx.cpu()).reshape((-1, 784))
        label = label.as_in_context(mx.cpu())
        with autograd.record(): # Start recording the derivatives
            output = net(data) # the forward iteration
            loss = softmax_cross_entropy(output, label)
            loss.backward()
        trainer.step(data.shape[0])
        # Provide stats on the improvement of the model over each epoch
        curr_loss = ndarray.mean(loss).asscalar()
    print("Epoch {}. Current Loss: {}.".format(e, curr_loss))
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (6)

加载中
一个tensotflow就够了,其他都一样
2017/10/23 09:02
回复
举报
无法入手
2017/10/22 02:28
回复
举报
先观望
2017/10/21 19:49
回复
举报
选择困难症了
2017/10/21 18:15
回复
举报
继前端轮子满天飞以后人工智能轮子满天飞的时代来了。
2017/10/21 15:53
回复
举报
md 这么多框架 到底哪个好?
2017/10/21 10:54
回复
举报
更多评论
暂无内容
发表了博客
2019/01/08 10:16

Gluon 参数读取

ndarray: save , load from mxnet import nd from mxnet.gluon import nn x = nd.ones(3) # nd.save('x',x) # x2 = nd.load('x') # print(x2) y = nd.zeros(4) # print([x,y]) # nd.save('xy',[x,y]) # x2, y2 = nd.load('xy') # print(x2,y2) mydict = {'x':x,'y':y} # nd.save('mydict',mydict) # mydict2 = nd.load('mydict') # print(mydict2) Gluon 模型参数:save_parameters , load_parameters...

0
0
发表了博客
2018/08/01 10:07

gluon多线程迭代器

gluon里面终于有了多线程迭代器,试了下,自定义程度高。 https://mxnet.incubator.apache.org/api/python/gluon/data.html?highlight=dataloader#mxnet.gluon.data.DataLoader https://github.com/apache/incubator-mxnet/pull/8413 import mxnet as mx import numpy as np def mybatchify_fn(data): print len(data),data[0] return None class tonyIter(mx.gluon.data.Dataset): def __init__(self, N): ...

0
0
发表了博客
2020/06/06 10:44

Gluon parameters 和 Blocks 命名

API:gluon中每个Parameters或者Block都有前缀prefix,Parameters的名字由用户指定,Block的名字可以由用户指定或自动生成。 from __future__ import print_function import mxnet as mx from mxnet import gluon Naming Blocks 创建Block时可以手动施加前缀: mydense = gluon.nn.Dense(100, prefix='mydense_') print(mydense.prefix) mydense_ 当不给定前缀时,gluon会自动生成: dense0 = gluon.nn.Dense(100) print(dense...

0
0
2017/10/27 22:56

mxnet的gluon接口

mxnet新出了个gluon接口,文档和api都还不错,有torch和tensorflow相似的一些风格,使得从这两个框架转过来相对容易一些。gluon接口中文网站传送门:https://zh.gluon.ai/index.html. gluon接口的中文文档除了介绍gluon接口外,还系统地介绍了深度学习的体系以及相关知识,完全可以当做一个免费的深度学习教程了。个人感觉,gluon接口可能会是mxnet未来发展的重点。感兴趣的朋友可以去了解看看。...

0
0
发表了博客
2018/05/16 19:09

『MXNet』第四弹_Gluon自定义层

一、不含参数层 通过继承Block自定义了一个将输入减掉均值的层:CenteredLayer类,并将层的计算放在forward函数里, from mxnet import nd, gluon from mxnet.gluon import nn class CenteredLayer(nn.Block): def __init__(self, **kwargs): super(CenteredLayer, self).__init__(**kwargs) def forward(self, x): return x - x.mean() # 直接使用这个层 layer = CenteredLayer() # la...

0
0
发表了博客
2018/05/16 15:20

『MXNet』第二弹_Gluon构建模型

上节用了Sequential类来构造模型。这里我们另外一种基于Block类的模型构造方法,它让构造模型更加灵活,也将让你能更好的理解Sequential的运行机制。 回顾: 序列模型生成 层填充 初始化模型参数 net = gluon.nn.Sequential() with net.name_scope(): net.add(gluon.nn.Dense(1)) net.collect_params().initialize(mx.init.Normal(sigma=1)) # 模型参数初始化选择normal分布 两点讲解: super(MLP, self).__init__(**kw...

0
0
发表了博客
2018/05/16 16:27

『MXNet』第三弹_Gluon模型参数

MXNet中含有init包,它包含了多种模型初始化方法。 from mxnet import init, nd from mxnet.gluon import nn net = nn.Sequential() net.add(nn.Dense(256, activation='relu')) net.add(nn.Dense(10)) net.initialize() x = nd.random.uniform(shape=(2,20)) y = net(x) 一、访问模型参数 我们知道可以通过[]来访问Sequential类构造出来的网络的特定层。对于带有模型参数的层,我们可以通过Block类的params属性来...

0
0
发表了博客
2018/05/24 20:12

『MXNet』第六弹_Gluon性能提升

一、符号式编程 1、命令式编程和符号式编程 命令式: def add(a, b): return a + b def fancy_func(a, b, c, d): e = add(a, b) f = add(c, d) g = add(e, f) return g fancy_func(1, 2, 3, 4) 符号式: def add_str(): return ''' def add(a, b): return a + b ''' def fancy_func_str(): return ''' def fancy_func(a, b, c, d): e = add(a, b) f = add(c,...

0
0
发表了博客
2018/03/16 17:41

MXNet的新接口Gluon

为什么要开发Gluon的接口 在MXNet中我们可以通过Sybmol模块来定义神经网络,并组通过Module模块提供的一些上层API来简化整个训练过程。那MXNet为什么还要重新开发一套Python的API呢,是否是重复造轮子呢?答案是否定的,Gluon主要是学习了Keras、Pytorch等框架的优点,支持动态图(Imperative)编程,更加灵活且方便调试。而原来MXNet基于Symbol来构建网络的方法是像TF、Caffe2一样静态图的编程方法。同时Gluon也继续了MXNet在静...

0
0
发表了博客
2019/10/14 18:23

gluon模块进行数据加载-Dataset和DataLoader

在gluon接口中,通过Dataset和DataLoader来对数据集进行循环遍历,并返回batch大小的数据,其中Dataset对象用于数据的收集、加载和变换,而DataLoader对象用于返回batch大小的数据。 1. 相关模块 mxnet.gluon.data : 数据加载API mxnet.gluon.data.vision : 专门用于计算机视觉的数据集API和处理工具 2. Dataset介绍 Dataset对象用于收集数据、加载和变换数据,其中 数据加载是能够通过给定的下标获取对应的样本,数据变换可以...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
6 评论
141 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部