3层-CNN卷积神经网络预测MNIST数字
本文创建一个简单的三层卷积网络来预测 MNIST 数字。这个深层网络由两个带有 ReLU 和 maxpool 的卷积层以及两个全连接层组成。

MNIST 由 60000 个手写体数字的图片组成。本文的目标是高精度地识别这些数字。

具体实现过程

  1. 导入 tensorflow、matplotlib、random 和 numpy。然后,导入 mnist 数据集并进行独热编码。请注意,TensorFlow 有一些内置的库来处理 MNIST,也会用到它们:

  2. 仔细观察一些数据有助于理解 MNIST 数据集。了解训练数据集中有多少张图片,测试数据集中有多少张图片。可视化一些数字,以便了解它们是如何表示的。这种输出可以对于识别手写体数字的难度有一种视觉感知,即使是对于人类来说也是如此。

上述代码的输出:

图 1 MNIST手写数字的一个例子

  1. 设置学习参数 batch_size和display_step。另外,MNIST 图片都是 28×28 像素,因此设置 n_input=784,n_classes=10 代表输出数字 [0-9],并且 dropout 概率是 0.85,则:

  2. 设置 TensorFlow 计算图的输入。定义两个占位符来存储预测值和真实标签:

  3. 定义一个输入为 x,权值为 W,偏置为 b,给定步幅的卷积层。激活函数是 ReLU,padding 设定为 SAME 模式:

  4. 定义一个输入是 x 的 maxpool 层,卷积核为 ksize 并且 padding 为 SAME:

  5. 定义 convnet,构成是两个卷积层,然后是全连接层,一个 dropout 层,最后是输出层:

  6. 定义网络层的权重和偏置。第一个 conv 层有一个 5×5 的卷积核,1 个输入和 32 个输出。第二个 conv 层有一个 5×5 的卷积核,32 个输入和 64 个输出。全连接层有 7×7×64 个输入和 1024 个输出,而第二层有 1024 个输入和 10 个输出对应于最后的数字数目。所有的权重和偏置用 randon_normal 分布完成初始化:

  7. 建立一个给定权重和偏置的 convnet。定义基于 cross_entropy_with_logits 的损失函数,并使用 Adam 优化器进行损失最小化。优化后,计算精度:

  8. 启动计算图并迭代 training_iterats次,其中每次输入 batch_size 个数据进行优化。用从 mnist 数据集分离出的 mnist.train 数据进行训练。每进行 display_step 次迭代,会计算当前的精度。最后,在 2048 个测试图片上计算精度,此时无 dropout。

  9. 画出每次迭代的 Softmax 损失以及训练和测试的精度:

以下是上述代码的输出。首先看一下每次迭代的 Softmax 损失:

图 2 减少损失的一个例子
再来看一下训练和测试的精度:

图 3 训练和测试精度上升的一个例子
解读分析
使用 ConvNet,在 MNIST 数据集上的表现提高到了近 95% 的精度。ConvNet 的前两层网络由卷积、ReLU 激活函数和最大池化部分组成,然后是两层全连接层(含dropout)。训练的 batch 大小为 128,使用 Adam 优化器,学习率为 0.001,最大迭代次数为 500 次。

3层-CNN卷积神经网络预测MNIST数字相关推荐

  1. 三维卷积神经网络预测MNIST数字详解

    from __future__ import division,print_function import tensorflow as tf import matplotlib.pyplot as p ...

  2. python神经网络案例——CNN卷积神经网络实现mnist手写体识别

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python教程全解 CNN卷积神经网络的理论教程参考 ...

  3. 卷积神经网络mnist手写数字识别代码_搭建经典LeNet5 CNN卷积神经网络对Mnist手写数字数据识别实例与注释讲解,准确率达到97%...

    LeNet-5卷积神经网络是最经典的卷积网络之一,这篇文章就在LeNet-5的基础上加入了一些tensorflow的有趣函数,对LeNet-5做了改动,也是对一些tf函数的实例化笔记吧. 环境 Pyc ...

  4. Tensorflow之 CNN卷积神经网络的MNIST手写数字识别

    点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 作者,周乘,华中科技大学电子与信息工程系在读. 前言 tensorflow中文社区对官方文档进行了完整翻 ...

  5. CNN卷积神经网络(数字分类)

    CNN卷积神经网络--手写数字识别 import torch import torch.nn as nn from torch.autograd import Variable import torc ...

  6. TensorFlow 2.0 mnist手写数字识别(CNN卷积神经网络)

    TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) 源代码/数据集已上传到 Github - tensorflow-tutorial-samples 大白话讲解卷积 ...

  7. 深度篇—— CNN 卷积神经网络(四) 使用 tf cnn 进行 mnist 手写数字 代码演示项目

    返回主目录 返回 CNN 卷积神经网络目录 上一章:深度篇-- CNN 卷积神经网络(三) 关于 ROI pooling 和 ROI Align 与 插值 本小节,细说 使用 tf cnn 进行 mn ...

  8. 【FPGA教程案例100】深度学习1——基于CNN卷积神经网络的手写数字识别纯Verilog实现,使用mnist手写数字数据库

    FPGA教程目录 MATLAB教程目录 ---------------------------------------- 目录 1.软件版本 2.CNN卷积神经网络的原理 2.1 mnist手写数字数 ...

  9. 深度学习--TensorFlow(项目)识别自己的手写数字(基于CNN卷积神经网络)

    目录 基础理论 一.训练CNN卷积神经网络 1.载入数据 2.改变数据维度 3.归一化 4.独热编码 5.搭建CNN卷积神经网络 5-1.第一层:第一个卷积层 5-2.第二层:第二个卷积层 5-3.扁 ...

最新文章

  1. vue-wechat-title
  2. Leetcode--542. 01 矩阵(java)
  3. 信息学奥赛一本通 1124:矩阵加法 | OpenJudge NOI 1.8 08:矩阵加法
  4. matlab2c使用c++实现matlab函数系列教程-unique函数
  5. django ForeignKey的swappable属性
  6. Visio 2010工具产品密钥
  7. SQL注入——判断注入
  8. 支付宝APP支付IOS手机端java后台版
  9. 几何画板椭圆九种画法_详解椭圆的五种画法,很全面!!!
  10. 容器监控实践—CAdvisor
  11. 浏览器兼容测试工具-IETest
  12. Efficient and Effective Data Imputation with Influence Functions
  13. 【autojs】Auto.js Pro免root打开无障碍服务(需adb授权,重启手机不失效)脚本源代码
  14. 微信支付密码设置html,微信支付页面怎么加密码锁屏(微信支付界面怎么上锁)...
  15. 鸿蒙系统打王者荣耀卡不卡,鸿蒙系统会不会越用越卡?鸿蒙系统会影响王者荣耀吗?...
  16. 代谢组学通路富集分析
  17. 网络爬虫-cnzz网站统计(umuuid参数加密破解)
  18. Protobuf Arena 教程
  19. wordpress html音乐,给你的WordPress博客文章中插入背景音乐的方法(纯代码,非插件)...
  20. sparksql insertinto 源码解析

热门文章

  1. deepin初试与file browser使用小结
  2. 2022-2028年中国防水橡胶布行业市场发展模式及投资前景分析报告
  3. bert-as-service使用
  4. tf.get_variable
  5. 自己动手实现20G中文预训练语言模型示例
  6. Vue生命周期函数详解
  7. LeetCode中等题之简易银行系统
  8. LeetCode简单题之山羊拉丁文
  9. 使用Auto TensorCore CodeGen优化Matmul
  10. 如何为应用选择最佳的FPGA(上)