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 相关文章推荐
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
python字典一键多值实例代码分享
Jun 14 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
Python之qq自动发消息的示例代码
Feb 18 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
用PHP生成自己的LOG文件
2006/10/09 PHP
提升PHP执行速度全攻略
2006/10/09 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
python实现连接mongodb的方法
2015/05/08 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
python调用私有属性的方法总结
2020/07/24 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
加拿大时装零售商:Influence U
2018/12/22 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
大学应届生的自我评价
2014/03/06 职场文书
会计专业自荐书
2014/07/08 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
西岭雪山导游词
2015/02/06 职场文书
感恩父母主题班会
2015/08/12 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis