深度学习(3)手写数字识别问题

  • 1. 问题归类
  • 2. 数据集
  • 3. Image
  • 4. Input and Output
  • 5. Regression VS Classification
  • 6. Computation Graph
  • 7. 两个问题
  • 8. Particularly
  • 9. 如何训练模型?→\to→ Loss
  • 10. 总结
  • 11. Deep Learning?
  • 12. Classification Procedure
  • 13. We need TensorFlow
  • 14. Next

1. 问题归类

Discrete Prediction(离散值的预测)

  • y=w∗x+by=w*x+by=w∗x+b
  • [up, left, down, right]
  • [dog, cat, whale, bird, …]
    手写数字识别问题属于离散值的预测。

2. 数据集

  • MNIST

    • 7000 images per category
    • train/test splitting: 60k vs 10k

3. Image

  • [28, 28, 1]
    图片是由28行×28列,共784个像素点组成,[0, 255]代表图片像素的灰度值,其中0代表纯白色,255代表纯黑色,1代表每个像素点的灰度值,也就是每个像素点只有1个维度,就是其灰度值。
  • →\to→ [784]
    将28×28的数据变为一维,将第二行的像素点拼接到一行后,后面26行同理,这样一张图片就变为了拥有784个元素的一维数据。

4. Input and Output

(1) 输入
x:[b,784]x:[b,784]x:[b,784]
输入是[b, 784],b可以理解为共有多少张图片,784表示每张图片有784个像素点。
(2) 编码方式

  • dog=0, cat=1, fish=2, …
    缺点: 不确定性高,例如要是预测值为1.5,就会产生判断失误。
  • dog = [1, 0, 0, …],其中“1”表示该预测值为“dog”的概率,“0”表示该预测值为“cat”的概率,…,这些概率和为1。
    cat = [0, 1, 0, …]
    fish = [0, 0, 1, …]

这种编码方式被称为one-hot编码。

5. Regression VS Classification

(1) 模型

  • y=x∗x+by=x*x+by=x∗x+b
  • y∈Rdy∈R^dy∈Rd

(2) 输出

  • out=X@W+bout=X@W+bout=X@W+b
  • out:[0.1,0.8,0.02,0.08]out:[0.1,0.8,0.02,0.08]out:[0.1,0.8,0.02,0.08]

(3) 预测

  • pred=argmax(out)pred=argmax(out)pred=argmax(out)

    • pred:1pred:1pred:1
    • label:2label:2label:2

6. Computation Graph

  • out=X@W+bout=X@W+bout=X@W+b
  • X:[b,784]X:[b,784]X:[b,784]
  • W:[784,10]W:[784,10]W:[784,10]
  • b:[10]b:[10]b:[10]

7. 两个问题

(1) It’s Linear!

  • out=X@W+bout=X@W+bout=X@W+b
  • →\to→
  • out=f(X@W+b)out=f(X@W+b)out=f(X@W+b)

  • out=relu(X@W+b)out=relu(X@W+b)out=relu(X@W+b)

(2) It’s too simple!

  • out=relu(X@W+b)out=relu(X@W+b)out=relu(X@W+b)
  • →\to→
  • h1=relu(X@W1+b1)h_1=relu(X@W_1+b_1)h1​=relu(X@W1​+b1​)
  • h2=relu(h1@W2+b2)h_2=relu(h_1@W_2+b_2)h2​=relu(h1​@W2​+b2​)
  • out=relu(h2@W3+b3)out=relu(h_2@W_3+b_3)out=relu(h2​@W3​+b3​)

8. Particularly

(1)X:[v1,v2,…,v784]X:[v_1,v_2,…,v_784]X:[v1​,v2​,…,v7​84]

  • X:[1,784]

(2) h1=relu(X@W1+b1)h_1=relu(X@W_1+b_1)h1​=relu(X@W1​+b1​)

  • W_1:[784,512]
    →[1,784]@[784,512]+[512]=[1,512]+[512]=[1,512]\to [1,784]@[784,512]+[512]=[1,512]+[512]=[1,512]→[1,784]@[784,512]+[512]=[1,512]+[512]=[1,512]
  • b1:[1,512]b_1:[1,512]b1​:[1,512]

(3) h2=relu(h1@W2+b2)h_2=relu(h_1@W_2+b_2)h2​=relu(h1​@W2​+b2​)

  • W_2:[512,256]
    →[1,512]@[512,256]+[256]=[1,256]+[256]=[1,256]\to [1,512]@[512,256]+[256]=[1,256]+[256]=[1,256]→[1,512]@[512,256]+[256]=[1,256]+[256]=[1,256]
  • b2:[1,256]b_2:[1,256]b2​:[1,256]

(4) out=relu(h2@W3+b3)out=relu(h_2@W_3+b_3)out=relu(h2​@W3​+b3​)

  • W_3:[256,10]
    →[1,256]@[256,10]+[10]=[1,10]+[10]=[1,10]\to [1,256]@[256,10]+[10]=[1,10]+[10]=[1,10]→[1,256]@[256,10]+[10]=[1,10]+[10]=[1,10]
  • b3:[1,10]b_3:[1,10]b3​:[1,10]
    从以上计算过程可以看出,神经网络其实是一个降维的过程,图片由原来的[1,784][1,784][1,784]降为[1,512][1,512][1,512],再降为[1,256][1,256][1,256],最后降为[1,10][1,10][1,10]。

    →[0,0,0.01,0.1,0.8,0,…]\to [0,0,0.01,0.1,0.8,0,…]→[0,0,0.01,0.1,0.8,0,…]
    根据以上输出可以判断这张图片为“5”的概率最大,所以这张图片的预测值为“5”。

9. 如何训练模型?→\to→ Loss

  • out:[1,10]
    →\to→
  • Y/label: 0~9
    • eg.: 1 →\to→ [0,1,0,0,0,0,0,0,0,0]
    • eg.: 3 →\to→ [0,0,0,1,0,0,0,0,0,0]


→\to→

  • Euclidean Distance(欧式距离): out→Labelout \to Labelout→Label

    • MSE,即∑(y−out)2\sum(y-out)^2∑(y−out)2

10. 总结

  • out=relu{relu{relu[X@W1+b1]@W2+b2}@W3+b3}out=relu\{relu\{relu[X@W_1+b_1]@W_2+b_2\}@W_3+b_3\}out=relu{relu{relu[X@W1​+b1​]@W2​+b2​}@W3​+b3​}
  • pred=argmax(out)pred=argmax(out)pred=argmax(out)
  • loss=MSE(out,label)loss=MSE(out,label)loss=MSE(out,label)
  • minimizelossminimize lossminimizeloss
    • [W1′,b1′,W2′,b2′,W3′,b3′][W_1',b_1',W_2',b_2',W_3',b_3'][W1′​,b1′​,W2′​,b2′​,W3′​,b3′​]

11. Deep Learning?

  • We have not seen it.
  • But we already master it.
  • We will show you It’s(almost)Deep Learning!

12. Classification Procedure

  • Step1. Compute h1,h2,outh_1,h_2,outh1​,h2​,out
  • Step2. Compute LossLossLoss
  • Step3. Compute gradient and update[W1′,b1′,W2′,b2′,W3′,b3′][W_1',b_1',W_2',b_2',W_3',b_3'][W1′​,b1′​,W2′​,b2′​,W3′​,b3′​]
  • Step4. Loop

13. We need TensorFlow

  • 数据量庞大;
  • TensorFlow计算和处理更快。

14. Next

  • Step1. have fun on MNIST classification
  • Step2. and we learn TensorFlow
  • Step3. and we implement Step1. by ourselves!

参考文献:
[1] 龙良曲:《深度学习与TensorFlow2入门实战》

深度学习(3)手写数字识别问题相关推荐

  1. 基于深度学习的手写数字识别、python实现

    基于深度学习的手写数字识别.python实现 一.what is 深度学习 二.加深层可以减少网络的参数数量 三.深度学习的手写数字识别 一.what is 深度学习 深度学习是加深了层的深度神经网络 ...

  2. 基于深度学习的手写数字识别Matlab实现

    基于深度学习的手写数字识别Matlab实现 1.网络设计 2. 训练方法 3.实验结果 4.实验结果分析 5.结论 1.网络设计 1.1 CNN(特征提取网络+分类网络) 随着深度学习的迅猛发展,其应 ...

  3. 03_深度学习实现手写数字识别(python)

    本次项目采用了多种模型进行测试,并尝试策略来提升模型的泛化能力,最终取得了99.67%的准确率,并采用pyqt5来制作可视化GUI界面进行呈现.具体代码已经开源. 代码详情见附录 1简介 早在1998 ...

  4. 【深度学习】手写数字识别Tensorflow2实验报告

    实验一:手写数字识别 一.实验目的 利用深度学习实现手写数字识别,当输入一张手写图片后,能够准确的识别出该图片中数字是几.输出内容是0.1.2.3.4.5.6.7.8.9的其中一个. 二.实验原理 ( ...

  5. Python实现深度学习MNIST手写数字识别(单文件,非框架,无需GPU,适合初学者)

    注: 本文根据阿卡蒂奥的Python深度学习博客文章代码进行调整,修复了少量问题,原文地址:https://blog.csdn.net/akadiao/article/details/78175737 ...

  6. 基于深度学习的手写数字识别算法Python实现

    摘 要 深度学习是传统机器学习下的一个分支,得益于近些年来计算机硬件计算能力质的飞跃,使得深度学习成为了当下热门之一.手写数字识别更是深度学习入门的经典案例,学习和理解其背后的原理对于深度学习的理解有 ...

  7. Python基于深度学习的手写数字识别

    Python基于深度学习的手写数字识别 1.代码的功能和运行方法 2. 网络设计 3.训练方法 4.实验结果分析 5.结论 1.代码的功能和运行方法 代码可以实现任意数字0-9的识别,只需要将图片载入 ...

  8. 深度学习数字仪表盘识别_深度学习之手写数字识别项目(Sequential方法amp;Class方法进阶版)...

    此项目使用LeNet模型针对手写数字进行分类.项目中我们分别采用了顺序式API和子类方法两种方式构建了LeNet模型训练mnist数据集,并编写了给图识物应用程序用于手写数字识别. 一.LeNet模型 ...

  9. 深度学习day04-MNIST手写数字识别与模型使用

    本文大概分为以下几个部分:手写数字识别原理(不强相关).具体代码实现(算上import和空行一共50行代码不到).训练出来的模型怎么使用. 目录 一.手写数字识别原理 二.具体代码实现 三.训练出来的 ...

  10. 深度学习(手写数字识别)

    本程序采用百度paddlepaddle深度学习框架,并在百度AI Studio平台上运行 目录 1 实验内容 2 实验流程 3 DNN模型 4 LeNet 模型 4.1 LeNet-1模型 4.2 L ...

最新文章

  1. vue组件的基本使用:入门示例
  2. Mpvue微信小程序时间消耗进度条组件的实现
  3. 为什么计算机语言都是英语,编程为什么都是英语 编程为什么没有汉语
  4. linux上如何查看具体的命令属于哪个安装包
  5. systemctl/systemd 常用命令
  6. 西门子step7安装注册表删除_如何完全删除step 7
  7. DOS命令教程 第二章——ping命令
  8. Windows系统怎么换硬盘图标
  9. 无线网首选dns服务器怎么设置,怎么设置无线路由器dns
  10. DedeCMS二次开发 - 文件结构了解
  11. lol服务器崩溃补偿领取中心,LOL官方: 服务器崩溃补偿! 全服再次免费赠送皮肤一款!...
  12. LiveRTMP推送RTSP视频源进行RTMP直播
  13. 《H打飞机》技術支持網址
  14. StarUML 3.2.2
  15. uap 自动生成场景代码
  16. 计算机控制的电子点火系统,计算机控制点火系统的组成及工作原理.ppt
  17. C++信息学奥赛题目归类:初赛普及组阅读程序写结果题
  18. 盖娅互娱测试工程师校招一面面经
  19. java js 打开摄像头_基于HTML5实现的超酷摄像头(HTML5 webcam)拍照功能 - photobooth.js...
  20. access通配符模糊查找_在Access 2010中使用通配符条目

热门文章

  1. ASP怎样定义应用主题服务器,ASP.NET 4权威指南 目录
  2. java动态菜单显示实现,java – 为Spring MVC / AOP应用程序实现动态菜单
  3. C++11保护共享数据的其他方法
  4. java复用类_java复用类
  5. linux 内核 报错,根据epc定位linux内核报错.pdf
  6. js中load载入html页面,使用jquery的load方法加载html页面,但是html引入的js不生效
  7. gradle项目搭建
  8. 使用Python计算指定目录md5,根据md5找查到相同的文件并打印
  9. MAC下搭建java的开发环境
  10. common_test使用注意事项