报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

AWS 与微软合作发布 Gluon API 可快速构建机器学习模型

  • 2017-10-18
  • 本文字数:1422 字

    阅读完需:约 5 分钟

2017 年 10 月 12 日, AWS 与微软合作发布了 Gluon 开源项目,该项目旨在帮助开发者更加简单快速的构建机器学习模型,同时保留了较好的性能。

根据 Gluon 项目官方 Github 页面上的描述,Gluon API 支持任意一种深度学习框架,其相关规范已经在 Apache MXNet 项目中实施,开发者只需安装最新版本的 MXNet(master)即可体验。AWS 用户可以创建一个AWS Deep Learning AMI 进行体验。

该页面提供了一段简易使用说明,摘录如下:

本教程以一个两层神经网络的构建和训练为例,我们将它称呼为多层感知机(multilayer perceptron)。(本示范建议使用Python 3.3 或以上,并且使用 Jupyter notebook 来运行。详细教程可参考这个页面。)

首先,进行如下引用声明:

复制代码
import mxnet as mx
from mxnet import gluon, autograd, ndarray
import numpy as np

然后,使用gluon.data.DataLoader承载训练数据和测试数据。这个 DataLoader 是一个 iterator 对象类,非常适合处理规模较大的数据集。

复制代码
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)

接下来,定义神经网络:

复制代码
# 先把模型做个初始化
net = gluon.nn.Sequential()
# 然后定义模型架构
with net.name_scope():
net.add(gluon.nn.Dense(128, activation="relu")) # 第一层设置 128 个节点
net.add(gluon.nn.Dense(64, activation="relu")) # 第二层设置 64 个节点
net.add(gluon.nn.Dense(10)) # 输出层

然后把模型的参数设置一下:

复制代码
# 先随机设置模型参数
# 数值从一个标准差为 0.05 正态分布曲线里面取
net.collect_params().initialize(mx.init.Normal(sigma=0.05))
# 使用 softmax cross entropy loss 算法
# 计算模型的预测能力
softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss()
# 使用随机梯度下降算法 (sgd) 进行训练
# 并且将学习率的超参数设置为 .1
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .1})

之后就可以开始跑训练了,一共分四个步骤。一、把数据放进去;二、在神经网络模型算出输出之后,比较其与实际结果的差距;三、用 Gluon 的autograd计算模型各参数对此差距的影响;四、用 Gluon 的trainer方法优化这些参数以降低差距。以下我们先让它跑 10 轮的训练:

复制代码
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))

若想了解更多 Gluon 说明与用法,可以查看 gluon.mxnet.io 这个网站。

2017-10-18 20:241897

评论

发布
暂无评论
发现更多内容

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

前端面试比较好的回答

loveX001

JavaScript

vivo 云原生容器探索和落地实践

vivo互联网技术

机器学习 AI 容器 云原生 k8s

版本更新 | Towify V1.24.0 有哪些实用新功能?汇总来了!

Towify

web前端经典react面试题

beifeng1996

React

跨平台应用开发进阶(二十四) :uni-app实现文件下载并保存

No Silver Bullet

uni-app 12月月更 文件下载 文件保存

跨平台应用开发进阶(二十六) :忐忑悲壮路,心酸出坑史——记第一次iOS艰辛上架路

No Silver Bullet

uni-app iOS上架 12月月更 问题汇总

三次握手与四次挥的问题,怎么回答?

loveX001

JavaScript

最新前端面试总结

loveX001

JavaScript

NeurIPS 2022:基于语义聚合的对比式自监督学习方法

华为云开发者联盟

人工智能 华为云 论文 12 月 PK 榜

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

教你用JavaScript完成简易贪吃蛇小游戏

小院里的霍大侠

JavaScript 编程开发 实战案例 初学者 入门实战

ClassLoader 隔离性的基石是namespace,证明给你看

小小怪下士

Java 程序员 面试

2022 阿里灵杰AI开发者峰会内容抢先看!

阿里云大数据AI技术

人工智能 阿里云

架构实战营 - 模块 2- 作业

zealot0317

如何使用 Towify 在小程序中实现勾选用户协议后登录?

Towify

微信小程序 无代码 触发器

老生常谈React的diff算法原理-面试版

beifeng1996

React

如何配置分享到微信功能?

Towify

微信小程序 无代码 触发器

百度工程师带你探秘C++内存管理(ptmalloc篇)

百度Geek说

c++ Linux 内存管理 12 月 PK 榜

程序员职场晋升:与阿里前P9的一次近距离互动

博文视点Broadview

数据可视化图表系列解析——柱状图

Data 探险实验室

数据分析 可视化 数据可视化 BI 分析工具 可视化数据

前端leetcde算法面试套路之树

js2030code

JavaScript LeetCode

DevData Talks | 大咖集结『研发效能答疑专场』即将开始!

思码逸研发效能

研发管理 研发效能 研发管理工具

跨平台应用开发进阶(二十五) :uni-app实现IOS云打包解决IOS提交审核相册等隐私描述语导致审核失败问题

No Silver Bullet

uni-app 12月月更 IOS云打包 提交审核 隐私描述语

Dubbo架构设计与源码解析(一) 架构设计

京东科技开发者

云原生 dubbo Java、 架构设计 分布式架构

问:React的setState为什么是异步的?

beifeng1996

React

昨天,同事优化加锁方式时,出现死锁了

华为云开发者联盟

高并发 开发 华为云 12 月 PK 榜

用javascript分类刷leetcode23.并查集(图文视频讲解)

js2030code

JavaScript LeetCode

关系型数据库设计三大范式

京东科技开发者

关系型数据库 数据库设计 范式 冗余 数据库·

社招前端二面react面试题整理

beifeng1996

React

AWS与微软合作发布Gluon API 可快速构建机器学习模型_微软_sai_InfoQ精选文章