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而不是Java?
Mar 07 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
python调用外部程序的实操步骤
Mar 04 Python
python async with和async for的使用
Jun 20 Python
python+logging+yaml实现日志分割
Jul 22 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Django多个app urls配置代码实例
Nov 26 Python
Python如何使用循环结构和分支结构
Apr 13 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
php使用正则验证中文
2016/04/06 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
原生JS生成指定位数的验证码
2020/10/28 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
Python中实现的RC4算法
2015/02/14 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python聊天室实例程序分享
2016/01/05 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Python 变量类型详解
2018/10/10 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
追悼会子女答谢词
2014/01/28 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
详解Django的MVT设计模式
2021/04/29 Python
django上传文件的三种方式
2021/04/29 Python
vue封装数字翻牌器
2022/04/20 Vue.js