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实现网络端口转发和重定向的方法
Sep 19 Python
python利用拉链法实现字典方法示例
Mar 25 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python管理Windows服务小脚本
Mar 12 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 Python
python开发入门——set的使用
Sep 03 Python
Python字典实现伪切片功能
Oct 28 Python
python 如何停止一个死循环的线程
Nov 24 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 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/13 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
javascript的事件描述
2006/09/08 Javascript
javascript函数库-集合框架
2007/04/27 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
python解析文件示例
2014/01/23 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
python3排序的实例方法
2020/10/20 Python
大学生应聘求职信
2014/05/26 职场文书
小学班级特色活动方案
2014/08/31 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android
Go gorilla/sessions库安装使用
2022/08/14 Golang