当前位置:云计算企业动态 → 正文

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

责任编辑:editor004 作者:杨赛 |来源:企业网D1Net  2017-10-19 11:43:31 本文摘自:INFOQ

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)进行训练# 并且将学习率的超参数设置为 .1trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .1})

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

epochs = 10for 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这个网站。

关键字:Gluoniterator模型参数API微软

本文摘自:INFOQ

x AWS与微软合作发布Gluon API 可快速构建机器学习模型 扫一扫
分享本文到朋友圈
当前位置:云计算企业动态 → 正文

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

责任编辑:editor004 作者:杨赛 |来源:企业网D1Net  2017-10-19 11:43:31 本文摘自:INFOQ

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)进行训练# 并且将学习率的超参数设置为 .1trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .1})

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

epochs = 10for 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这个网站。

关键字:Gluoniterator模型参数API微软

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^