1、何为手写数字识别问题?

手写数字识别即将如下图所示的各种各样的手写体阿拉伯数字识别出来的一个过程,这个问题已经被研究的很成熟了,也有人搜集和整理了手写数字的数据集-mnist。

2、如何解决手写数字识别问题?

在本次的手写数字识别问题中我们运用到了前面所讲的线性回归模型,通过利用多层的线性回归,并引入非线性因素relu进行训练,训练好模型后进行测试,整个模型公式如下所示:

上述公式所述的过程从直观上看就是一个如下图所示的三层神经网络 ,每一层都运用了线性回归,并运用了relu()函数作为网络中的非线性因素。在建立网络的过程中还运用到了tensorflow框架。

该三层网络输入为28*28=784个结点,输出为10个节点,这10个结点分别对应的是每一个数字的概率,通过寻找最大概率对应的结点即可分辨出该手写数字体是什么数字。

3、实战及代码

# -*- coding: utf-8 -*-
"""
Created on Thu Apr  2 08:36:14 2020@author: lenovo
"""import tensorflow as tf
import numpy as np
from tensorflow.keras import datasets,layers,optimizers#step1:读入图片
(x_train, y_train), (x_test, y_test) = datasets.mnist.load_data()
print('datasets:',x_train.shape,y_train.shape,x_test.shape,y_test.shape)
#将输入数据的类型转换为tensor型
x_train=tf.convert_to_tensor(x_train,dtype=tf.float32)/255.#训练集
y_train = tf.one_hot(y_train, depth=10)
x_test=tf.convert_to_tensor(x_test,dtype=tf.float32)/255.#测试集
#建立训练集
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = train_dataset.batch(200)
#建立测试集
test_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test))
test_dataset = test_dataset.batch(200)#step2:建立模型
#三层模型,1.784-512,2.512-256,3.256-10
model = tf.keras.Sequential([ layers.Dense(512, activation='relu'),layers.Dense(256, activation='relu'),layers.Dense(10)])
#梯度下降优化,学习率为0.0001
optimizer = optimizers.SGD(learning_rate=0.0001)#step3:训练模型
def execute_train_epoch(epoch):# 执行循环for step, (x_train, y_train) in enumerate(train_dataset):with tf.GradientTape() as tape:# 输入矩阵变维,[b, 28, 28] => [b, 784]x_train = tf.reshape(x_train, (-1, 28*28))# 计算输出,[b, 784] => [b, 10]out = model(x_train)# 计算lossloss = tf.reduce_sum(tf.square(out - y_train)) / x_train.shape[0]# 更新 w1, w2, w3, b1, b2, b3grads = tape.gradient(loss, model.trainable_variables)# 梯度下降,w' = w - lr * gradoptimizer.apply_gradients(zip(grads, model.trainable_variables))if step % 100 == 0:print(epoch, step, 'loss:', loss.numpy())#训练
def train():for epoch in range(30):execute_train_epoch(epoch)#step4:执行测试
def test():for step, (x_test, y_test) in enumerate(test_dataset):# 输入矩阵变维,[b, 28, 28] => [b, 784]x_test= tf.reshape(x_test, (-1, 28*28))# 计算输出,[b, 784] => [b, 10]out = model(x_test)#根据计算输出结果进行数字分类for i in range(200):number=out[i,:]number=np.array(number)print('Number is:',np.argmax(number))
train()
test()

训练结果:

测试结果:

手写数字识别问题实战相关推荐

  1. 用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 (zz)

    用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 我想写一系列深度学习的简单实战教程,用mxnet做实现平台的实例代码简单讲解深度学习常用的一些技术方向和实战样例.这 ...

  2. 深度学习(4)手写数字识别实战

    深度学习(4)手写数字识别实战 Step0. 数据及模型准备 1. X and Y(数据准备) 2. out=relu{relu{relu[X@W1+b1]@W2+b2}@W3+b3}out=relu ...

  3. 深度学习数字仪表盘识别_【深度学习系列】手写数字识别实战

    上周在搜索关于深度学习分布式运行方式的资料时,无意间搜到了paddlepaddle,发现这个框架的分布式训练方案做的还挺不错的,想跟大家分享一下.不过呢,这块内容太复杂了,所以就简单的介绍一下padd ...

  4. 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别

    "我的Go+语言初体验" | 征文活动进行中- 我的Go+语言初体验--Go+语言构建神经网络实战手写数字识别 0. 前言 1. 神经网络相关概念 2. 构建神经网络实战手写数字识 ...

  5. 前馈神经网络与支持向量机实战 --- 手写数字识别

    前馈神经网络与支持向量机实战 - 手写数字识别 文章目录 前馈神经网络与支持向量机实战 --- 手写数字识别 一.前馈神经网络介绍 二.支持向量机介绍 三.数据集说明 四.环境准备 五.实验要求 六. ...

  6. pytorch 预测手写体数字_深度学习之PyTorch实战(3)——实战手写数字识别

    如果需要小编其他论文翻译,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 上一节,我们已经 ...

  7. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  8. 深度学习项目实战——手写数字识别项目

    摘要 本文将介绍的有关于的paddle的实战的相关的问题,并分析相关的代码的阅读和解释.并扩展有关于的python的有关的语言.介绍了深度学习步骤: 1. 数据处理:读取数据 和 预处理操作 2. 模 ...

  9. 基于Paddle的计算机视觉入门教程——第7讲 实战:手写数字识别

    B站教程地址 https://www.bilibili.com/video/BV18b4y1J7a6/ 任务介绍 手写数字识别是计算机视觉的一个经典项目,因为手写数字的随机性,使用传统的计算机视觉技术 ...

最新文章

  1. valgrind-yyds——memcheck检查程序中的内存问题,如泄漏、越界、非法指针等。
  2. memcached(二)事件模型源码分析
  3. PowerDesigner 15 进行 数据库反转到 数据库模型
  4. 蓝桥杯——说好的进阶之去反复元素的排列组合
  5. python【力扣LeetCode算法题库】1162- 地图分析(BFS)
  6. Java使用javax.mail.jar发送邮件并同意发送附件
  7. const_iterator,const 迭代器
  8. python批量生成图_利用Python批量生成任意尺寸的图片
  9. ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)
  10. 案例学习BlazeDS+Spring之十一:Simple Data Push
  11. 软件测试仓库管理信息系统,仓库管理系统测试报告
  12. 韩立刚《计算机网络》| 第7章 网络安全
  13. 【探索HTML5第二弹03】走近地图应用的世界,看我们google地图可以看些什么!
  14. 随興8作者雨落下無痕
  15. 微信小程序 逆向还原
  16. 51单片机常用功能及相关内容
  17. html table拓宽,excel拉长单元格_excel调整单元格大小的方法步骤详解
  18. 春招升级打怪拿offer,10w+字总结的Java面试题(附答案)够你刷
  19. 调用webservice的奇怪404错误
  20. OpenCV 中用cv::IMREAD_GRAYSCALE与cv::cvtColor转灰度得到灰度图不一致问题

热门文章

  1. java filer,java – Filer的原始元素是否有用?
  2. 如何取消EXCEL文件的“受保护的视图“
  3. 计算机游戏中屏幕上显示的,电脑在玩全屏游戏的时候显示屏老是出现无信号
  4. 视频太大怎么压缩变小?
  5. android圆角glide,使用Glide加载圆角矩形图片、圆形图片
  6. Python-3 EXCEL 操作-1
  7. apicloud——微信第三方登录、apple登录
  8. 网站权重是什么意思?
  9. 在c语言中 合法常量的规定,以下选项中不能作为C语言合法常量的是( )
  10. Tensorflow2 图像分类-Flowers数据及分类代码详解