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 相关文章推荐
python字典基本操作实例分析
Jul 11 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
Python解决走迷宫问题算法示例
Jul 27 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
django框架两个使用模板实例
Dec 11 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
Python中Selenium模块的使用详解
Oct 09 Python
Python eval函数原理及用法解析
Nov 14 Python
python实现马丁策略的实例详解
Jan 15 Python
详解python的内存分配机制
May 10 Python
一篇文章带你搞懂Python类的相关知识
May 20 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 strtotime 函数UNIX时间戳
2009/01/14 PHP
php 操作符与控制结构
2012/03/07 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
python3.x上post发送json数据
2018/03/04 Python
pytorch 数据集图片显示方法
2018/07/26 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
Python tornado上传文件的功能
2020/03/26 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
Python识别验证码的实现示例
2020/09/30 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
设计总监岗位职责
2013/12/07 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
支部组织生活会方案
2014/06/10 职场文书
小学教育见习总结
2015/06/23 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书