Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例


Posted in Python onDecember 18, 2019

本文实例讲述了Python使用gluon/mxnet模块实现的mnist手写数字识别功能。分享给大家供大家参考,具体如下:

import gluonbook as gb
from mxnet import autograd,nd,init,gluon
from mxnet.gluon import loss as gloss,data as gdata,nn,utils as gutils
import mxnet as mx
net = nn.Sequential()
with net.name_scope():
  net.add(
    nn.Conv2D(channels=32, kernel_size=5, activation='relu'),
    nn.MaxPool2D(pool_size=2, strides=2),
    nn.Flatten(),
    nn.Dense(128, activation='sigmoid'),
    nn.Dense(10, activation='sigmoid')
  )
lr = 0.5
batch_size=256
ctx = mx.gpu()
net.initialize(init=init.Xavier(), ctx=ctx)
train_data, test_data = gb.load_data_fashion_mnist(batch_size)
trainer = gluon.Trainer(net.collect_params(),'sgd',{'learning_rate' : lr})
loss = gloss.SoftmaxCrossEntropyLoss()
num_epochs = 30
def train(train_data, test_data, net, loss, trainer,num_epochs):
  for epoch in range(num_epochs):
    total_loss = 0
    for x,y in train_data:
      with autograd.record():
        x = x.as_in_context(ctx)
        y = y.as_in_context(ctx)
        y_hat=net(x)
        l = loss(y_hat,y)
      l.backward()
      total_loss += l
      trainer.step(batch_size)
    mx.nd.waitall()
    print("Epoch [{}]: Loss {}".format(epoch, total_loss.sum().asnumpy()[0]/(batch_size*len(train_data))))
if __name__ == '__main__':
  try:
    ctx = mx.gpu()
    _ = nd.zeros((1,), ctx=ctx)
  except:
    ctx = mx.cpu()
  ctx
  gb.train(train_data,test_data,net,loss,trainer,ctx,num_epochs)

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
Python时间模块datetime、time、calendar的使用方法
Jan 13 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
python+selenium识别验证码并登录的示例代码
Dec 21 Python
Python实现端口检测的方法
Jul 24 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
python实现电子产品商店
Feb 26 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
Python如何绘制日历图和热力图
Aug 07 Python
对PyTorch中inplace字段的全面理解
May 22 Python
简单了解Python读取大文件代码实例
Dec 18 #Python
python 比较2张图片的相似度的方法示例
Dec 18 #Python
使用Python的Turtle库绘制森林的实例
Dec 18 #Python
python3 requests库实现多图片爬取教程
Dec 18 #Python
在notepad++中实现直接运行python代码
Dec 18 #Python
简单了解python装饰器原理及使用方法
Dec 18 #Python
修改Pandas的行或列的名字(重命名)
Dec 18 #Python
You might like
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
html5开发之viewport使用
2013/10/17 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
Why we need EJB
2016/10/20 面试题
关于旅游的活动方案
2014/08/15 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
MySQL8.0.18配置多主一从
2021/06/21 MySQL
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS