3层-CNN卷积神经网络预测MNIST数字
3层-CNN卷积神经网络预测MNIST数字
本文创建一个简单的三层卷积网络来预测 MNIST 数字。这个深层网络由两个带有 ReLU 和 maxpool 的卷积层以及两个全连接层组成。
MNIST 由 60000 个手写体数字的图片组成。本文的目标是高精度地识别这些数字。
具体实现过程
导入 tensorflow、matplotlib、random 和 numpy。然后,导入 mnist 数据集并进行独热编码。请注意,TensorFlow 有一些内置的库来处理 MNIST,也会用到它们:
仔细观察一些数据有助于理解 MNIST 数据集。了解训练数据集中有多少张图片,测试数据集中有多少张图片。可视化一些数字,以便了解它们是如何表示的。这种输出可以对于识别手写体数字的难度有一种视觉感知,即使是对于人类来说也是如此。
上述代码的输出:
图 1 MNIST手写数字的一个例子
设置学习参数 batch_size和display_step。另外,MNIST 图片都是 28×28 像素,因此设置 n_input=784,n_classes=10 代表输出数字 [0-9],并且 dropout 概率是 0.85,则:
设置 TensorFlow 计算图的输入。定义两个占位符来存储预测值和真实标签:
定义一个输入为 x,权值为 W,偏置为 b,给定步幅的卷积层。激活函数是 ReLU,padding 设定为 SAME 模式:
定义一个输入是 x 的 maxpool 层,卷积核为 ksize 并且 padding 为 SAME:
定义 convnet,构成是两个卷积层,然后是全连接层,一个 dropout 层,最后是输出层:
定义网络层的权重和偏置。第一个 conv 层有一个 5×5 的卷积核,1 个输入和 32 个输出。第二个 conv 层有一个 5×5 的卷积核,32 个输入和 64 个输出。全连接层有 7×7×64 个输入和 1024 个输出,而第二层有 1024 个输入和 10 个输出对应于最后的数字数目。所有的权重和偏置用 randon_normal 分布完成初始化:
建立一个给定权重和偏置的 convnet。定义基于 cross_entropy_with_logits 的损失函数,并使用 Adam 优化器进行损失最小化。优化后,计算精度:
启动计算图并迭代 training_iterats次,其中每次输入 batch_size 个数据进行优化。用从 mnist 数据集分离出的 mnist.train 数据进行训练。每进行 display_step 次迭代,会计算当前的精度。最后,在 2048 个测试图片上计算精度,此时无 dropout。
画出每次迭代的 Softmax 损失以及训练和测试的精度:
以下是上述代码的输出。首先看一下每次迭代的 Softmax 损失:
图 2 减少损失的一个例子
再来看一下训练和测试的精度:
图 3 训练和测试精度上升的一个例子
解读分析
使用 ConvNet,在 MNIST 数据集上的表现提高到了近 95% 的精度。ConvNet 的前两层网络由卷积、ReLU 激活函数和最大池化部分组成,然后是两层全连接层(含dropout)。训练的 batch 大小为 128,使用 Adam 优化器,学习率为 0.001,最大迭代次数为 500 次。
3层-CNN卷积神经网络预测MNIST数字相关推荐
- 三维卷积神经网络预测MNIST数字详解
from __future__ import division,print_function import tensorflow as tf import matplotlib.pyplot as p ...
- python神经网络案例——CNN卷积神经网络实现mnist手写体识别
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python教程全解 CNN卷积神经网络的理论教程参考 ...
- 卷积神经网络mnist手写数字识别代码_搭建经典LeNet5 CNN卷积神经网络对Mnist手写数字数据识别实例与注释讲解,准确率达到97%...
LeNet-5卷积神经网络是最经典的卷积网络之一,这篇文章就在LeNet-5的基础上加入了一些tensorflow的有趣函数,对LeNet-5做了改动,也是对一些tf函数的实例化笔记吧. 环境 Pyc ...
- Tensorflow之 CNN卷积神经网络的MNIST手写数字识别
点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 作者,周乘,华中科技大学电子与信息工程系在读. 前言 tensorflow中文社区对官方文档进行了完整翻 ...
- CNN卷积神经网络(数字分类)
CNN卷积神经网络--手写数字识别 import torch import torch.nn as nn from torch.autograd import Variable import torc ...
- TensorFlow 2.0 mnist手写数字识别(CNN卷积神经网络)
TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) 源代码/数据集已上传到 Github - tensorflow-tutorial-samples 大白话讲解卷积 ...
- 深度篇—— CNN 卷积神经网络(四) 使用 tf cnn 进行 mnist 手写数字 代码演示项目
返回主目录 返回 CNN 卷积神经网络目录 上一章:深度篇-- CNN 卷积神经网络(三) 关于 ROI pooling 和 ROI Align 与 插值 本小节,细说 使用 tf cnn 进行 mn ...
- 【FPGA教程案例100】深度学习1——基于CNN卷积神经网络的手写数字识别纯Verilog实现,使用mnist手写数字数据库
FPGA教程目录 MATLAB教程目录 ---------------------------------------- 目录 1.软件版本 2.CNN卷积神经网络的原理 2.1 mnist手写数字数 ...
- 深度学习--TensorFlow(项目)识别自己的手写数字(基于CNN卷积神经网络)
目录 基础理论 一.训练CNN卷积神经网络 1.载入数据 2.改变数据维度 3.归一化 4.独热编码 5.搭建CNN卷积神经网络 5-1.第一层:第一个卷积层 5-2.第二层:第二个卷积层 5-3.扁 ...
最新文章
- vue-wechat-title
- Leetcode--542. 01 矩阵(java)
- 信息学奥赛一本通 1124:矩阵加法 | OpenJudge NOI 1.8 08:矩阵加法
- matlab2c使用c++实现matlab函数系列教程-unique函数
- django ForeignKey的swappable属性
- Visio 2010工具产品密钥
- SQL注入——判断注入
- 支付宝APP支付IOS手机端java后台版
- 几何画板椭圆九种画法_详解椭圆的五种画法,很全面!!!
- 容器监控实践—CAdvisor
- 浏览器兼容测试工具-IETest
- Efficient and Effective Data Imputation with Influence Functions
- 【autojs】Auto.js Pro免root打开无障碍服务(需adb授权,重启手机不失效)脚本源代码
- 微信支付密码设置html,微信支付页面怎么加密码锁屏(微信支付界面怎么上锁)...
- 鸿蒙系统打王者荣耀卡不卡,鸿蒙系统会不会越用越卡?鸿蒙系统会影响王者荣耀吗?...
- 代谢组学通路富集分析
- 网络爬虫-cnzz网站统计(umuuid参数加密破解)
- Protobuf Arena 教程
- wordpress html音乐,给你的WordPress博客文章中插入背景音乐的方法(纯代码,非插件)...
- sparksql insertinto 源码解析