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删除列表中重复记录的方法
Apr 28 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
pytorch forward两个参数实例
Jan 17 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 Python
python实现语音常用度量方法的代码详解
May 25 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 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中调用JAVA
2006/10/09 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
详解angular笔记路由之angular-router
2017/09/12 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
opencv python如何实现图像二值化
2020/02/03 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
开学寄语大全
2014/04/08 职场文书
聘用合同范本
2015/09/21 职场文书
Python基础之pandas数据合并
2021/04/27 Python