Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >TensorFlow 手写数字识别与一步一步实现卷积神经网络(附代码实战)

TensorFlow 手写数字识别与一步一步实现卷积神经网络(附代码实战)

作者头像
磐创AI
发布于 2018-04-24 10:05:55
发布于 2018-04-24 10:05:55
2.8K0
举报

手写数字识别

接下来将会以 MNIST 数据集为例,使用卷积层和池化层,实现一个卷积神经网络来进行手写数字识别,并输出卷积和池化效果。

数据准备
  • MNIST 数据集下载

MNIST 数据集可以从 THE MNIST DATABASE of handwritten digits 的网站直接下载。 网址:http://yann.lecun.com/exdb/mnist/

train-images-idx3-ubyte.gz: 训练集图片 train-labels-idx1-ubyte.gz: 训练集列标 t10k-images-idx3-ubyte.gz: 测试集图片 t10k-labels-idx1-ubyte.gz: 测试集列标

TensorFlow 有加载 MNIST 数据库相关的模块,可以在程序运行时直接加载。

代码如下:

代码的输出依次是:

1.单个手写数字图片的维度: (784,)

2.转化为二维矩阵之后的打印结果: (28, 28)

3.使用 matplotlib 输出为图片

模型实现
TensorFlow conv2d 函数介绍:

tf.nn.conv2d(x, W, strides, padding=’SAME’) 针对输入的 4 维数据 x 计算 2 维卷积。

参数 x: 4 维张量,每一个维度分别是 batch,in_height,in_height,in_channels。 [batch, in_height, in_width, in_channels]

灰度图像只有 2 维来表示每一个像素的值,彩色图像每一个像素点有 3 通道的 RGB 值,所以一个彩色图片转化成张量后是 3 维的,分别是长度,宽度,颜色通道数。又因为每一次训练都是训练都是输入很多张图片,所以,多个 3 维张量组合在一起变成了 4 维张量。

参数 w: 过滤器,因为是二维卷积,所以它的维度是:

[filter_height, filter_width, in_channels, out_channels]

与参数 x 对应,前 3 个参数分别是对应 x 的 filter_height, filter_width, in_channels,最后一个参数是过滤器的输出通道数量。

参数 strides: 1 维长度为 4 的张量,对应参数 x 的 4 个维度上的步长。

参数 padding: 边缘填充方式,主要是 “SAME”, “VALID”,一般使用 “SAME”。

卷积层简单封装

TensorFlow max_pool 函数介绍:

tf.nn.max_pool(x, ksize, strides ,padding)

参数 x: 和 conv2d 的参数 x 相同,是一个 4 维张量,每一个维度分别代表 batch,in_height,in_height,in_channels。

参数 ksize: 池化核的大小,是一个 1 维长度为 4 的张量,对应参数 x 的 4 个维度上的池化大小。

参数 strides: 1 维长度为 4 的张量,对应参数 x 的 4 个维度上的步长。

参数 padding: 边缘填充方式,主要是 “SAME”, “VALID”,一般使用 “SAME”。

接下来将会使用 TensorFlow 实现以下结构的卷积神经网络:

池化层简单封装
超参数定义:卷积神经网络函数

卷积神经网络定义:

效果评估

训练过程输出


模型优化

经典卷积神经网络

图像分类实战项目

The CIFAR-10 dataset

https://www.cs.toronto.edu/~kriz/cifar.html

目标检测实战项目

Tensorflow Object Detection API

https://github.com/tensorflow/models/tree/master/research/object_detection

主要参考对象:

1.TensorFlow 官方介绍

Image Recognition https://tensorflow.google.cn/tutorials/image_recognition

https://www.tensorflow.org/tutorials/deep_cnn

2.最经典论文

ImageNet Classification with Deep Convolutional Neural Networks http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks

3.最经典课程

Convolutional Neural Networks http://cs231n.github.io/convolutional-networks/ Deep learning http://neuralnetworksanddeeplearning.com/chap6.html

3.Wikipedia

Convolutional neural network https://en.wikipedia.org/wiki/Convolutional_neural_network

4.Good tutorial

Comparison of Normal Neural network

https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/convolutional_neural_networks.html

Convolutional Neural Networks (LeNet)

http://deeplearning.net/tutorial/lenet.html#sparse-connectivity

Convolutional neural networks from scratch

http://gluon.mxnet.io/chapter04_convolutional-neural-networks/cnn-scratch.html

卷积神经网络

http://prors.readthedocs.io/zh_CN/latest/2ndPart/Chapter8.SceneClassification/ConvNet.html

ImageNet Classification with Deep Convolutional Neural Networks

https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磐创AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TensorFlow 深度学习笔记 卷积神经网络
Convolutional Networks deep dive into images and convolutional models Convnet BackGround 人眼在识别图像时,往往从局部到全局 局部与局部之间联系往往不太紧密 我们不需要神经网络中的每个结点都掌握全局的知识,因此可以从这里减少需要学习的参数数量 Weight share 但这样参数其实还是挺多的,所以有了另一种方法:权值共享 Share Parameters across space 取图片的一小块,在上面做神经网络分
梦里茶
2018/01/15
6600
TensorFlow 深度学习笔记 卷积神经网络
Android+TensorFlow+CNN+MNIST实现手写数字识别
训练和评估部分主要目的是生成用于测试用的pb文件,其保存了利用TensorFlow python API构建训练后的网络拓扑结构和参数信息,实现方式有很多种,除了cnn外还可以使用rnn,fcnn等。 其中基于cnn的函数也有两套,分别为tf.layers.conv2d和tf.nn.conv2d, tf.layers.conv2d使用tf.nn.conv2d作为后端处理,参数上filters是整数,filter是4维张量。原型如下:
xiangzhihong
2022/11/30
5250
TensorFlow-手写数字识别(三)
本篇文章在上篇TensorFlow-手写数字识别(二)的基础上,将全连接网络改为LeNet-5卷积神经网络,实现手写数字识别。
xxpcb
2020/08/04
9910
[Tensorflow] Tensorflow卷积理解
CNN对于学习深度学习的人来说应该是比较耳熟的名词了.但很多人只是听过,但不知道是什么.
wOw
2018/09/18
1.9K0
[Tensorflow] Tensorflow卷积理解
深度学习之卷积神经网络CNN及tensorflow代码实现示例
在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连的。当输入层的特征维度变得很高时,这时全连接网络需要训练的参数就会增大很多,计算速度就会变得很慢,例如一张黑白的 28×28 28×28 的手写数字图片,输入层的神经元就有784个,如下图所示:
全栈程序员站长
2022/09/10
1.1K0
深度学习之卷积神经网络CNN及tensorflow代码实现示例
【Tensorflow】 写给初学者的深度学习教程之 MNIST 数字识别
一般而言,MNIST 数据集测试就是机器学习和深度学习当中的"Hello World"工程,几乎是所有的教程都会把它放在最开始的地方.这是因为,这个简单的工程包含了大致的机器学习流程,通过练习这个工程有助于读者加深理解机器学习或者是深度学习的大致流程.
Frank909
2019/01/14
1.3K0
基于tensorflow实现简单卷积神经网络Lenet5
参考博客:https://blog.csdn.net/u012871279/article/details/78037984 https://blog.csdn.net/u014380165/article/details/77284921 目前人工智能神经网络已经成为非常火的一门技术,今天就用tensorflow来实现神经网络的第一块敲门砖。 首先先分模块解释代码。 1.先导入模块,若没有tensorflow还需去网上下载,这里使用mnist训练集来训练,进行手写数字的识别。 from tensorflo
徐飞机
2018/05/15
1.1K0
基于卷积神经网络的图像识别
视觉是人类认识世界非常重要的一种知觉。对于人类来说,通过识别手写体数字、识别图片中的物体或者是找出4%图片中人脸的轮廓都是非常简单的任务。然而对于计算机而言,让计算机识别图片中的内容就不是一件容易的事情了。图像识别问题希望借助计算机程序来处理、分析和理解图片中的内容,使得计算机可以从图片中自动识别各种不同模式的目标和对象。图像识别作为人工智能的一个重要领域,在最近几年已经取得了很多突破性的进展,而神经网络就是这些突破性进展背后的主要技术支持。
狼啸风云
2019/03/05
7.8K0
一看就懂的Tensorflow实战(卷积神经网络)
注意,这里只需要给出输入数据,输出通道数,卷积核大小即可。 Pooling layers 模块提供了多个池化方法,这几个池化方法都是类似的,包括 max_pooling1d()、max_pooling2d()、max_pooling3d()、average_pooling1d()、average_pooling2d()、average_pooling3d(),分别代表一维二维三维最大和平均池化方法,它们都定义在 tensorflow/python/layers/pooling.py 中,这里以 > max_pooling2d() 方法为例进行介绍。 max_pooling2d( inputs, pool_size, strides, padding='valid', data_format='channels_last', name=None ) 参数说明如下:
AI异构
2020/07/29
5340
一看就懂的Tensorflow实战(卷积神经网络)
深度学习之卷积
今日休假,把卷积神经网络梳理下。先从一些基本概念入手,什么是卷积?为什么叫这么个名字? 搜索了一遍,网上有很多人已经表述的非常好了,这里用自己理解的语言重述下。
breezedancer
2018/09/12
5170
深度学习之卷积
tensorflow oom报错OOM when allocating tensor with shape
今天在GPU上运行卷积神经网络手写数字,报了如下错误Resource exhausted: OOM when allocating tensor with shape[10000,32,28,28] 一开始还不知道因为什么,因为我的训练集我已经分批训练了啊,竟然换回出现这样的问题,后来在StackOverflow上发现了原因。原来我在做测试的时候一下子把测试集全部读进去了,这就造成了显卡的显存不能容纳这么多的数据,造成的崩溃,只需要改改最后测试就行了。 即将print("test accuracy
听城
2018/04/27
2.4K0
CNN神经网络--手写数字识别
CNN神经网络–手写数字识别 引入包 python import numpy as np import tensorflow as tf 下载并载入 MNIST 手写数字库(55000 * 28 *
MiChong
2020/09/24
1.2K0
CNN神经网络--手写数字识别
CNN卷积神经网络之通俗理解!
简而言之,卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。卷积神经网络的创始人是着名的计算机科学家Yann LeCun,目前在Facebook工作,他是第一个通过卷积神经网络在MNIST数据集上解决手写数字问题的人。
智能算法
2019/07/12
1.8K0
CNN卷积神经网络之通俗理解!
[Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
相关博文: [Hands On ML] 3. 分类(MNIST手写数字预测) [Kaggle] Digit Recognizer 手写数字识别 [Kaggle] Digit Recognizer 手写数字识别(简单神经网络) 04.卷积神经网络 W1.卷积神经网络
Michael阿明
2021/02/19
1.4K0
[Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
CNN卷积算法应用---手写数字识别
源码如下: # !/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/4/8 7:52 PM # @Author : lizhao # @File : cnn_mnist.py # @Version : 1.0 # 说明: 卷积神经网络 import numpy as np import tensorflow as tf # 下载并载入 MNIST手写数字库(55000 * 28 * 28) 55000张训练图片 fr
98k
2019/04/18
3810
机器学习入门之HelloWorld(Tensorflow)
本文介绍一些机器学习的入门知识,从安装环境到跑通机器学习入门程序MNIST demo。
Techeek
2018/03/13
4.1K4
机器学习入门之HelloWorld(Tensorflow)
不怕学不会 使用TensorFlow从零开始构建卷积神经网络
人们可以使用TensorFlow的所有高级工具如tf.contrib.learn和Keras,能够用少量代码轻易的建立一个卷积神经网络。但是通常在这种高级应用中,你不能访问代码中的部分内容,对深层次的原理缺乏理解。 在本教程中,我将介绍如何从零开始使用底层的TensorFlow构建卷积神经网络,并使用TensorBoard可视化我们的函数图像和网络性能。本教程需要你了解神经网络的一些基础知识。在整篇文章中,我还将把卷积神经网络的每一步都分解为绝对的基础知识,以便你可以充分理解图中每一步发生的情况。通过从头开
AiTechYun
2018/03/05
1.2K0
不怕学不会 使用TensorFlow从零开始构建卷积神经网络
Tensorflow入门1-CNN网络及MNIST例子讲解
人工智能自从阿尔法狗大败李世石后就异常火爆,最近工作中需要探索AI在移动端的应用,趁着这个计划入门下深度学习吧。
用户3578099
2019/08/16
1.2K0
【DL笔记9】搭建CNN哪家强?TensorFlow,Keras谁在行?
从【DL笔记1】到【DL笔记N】,是我学习深度学习一路上的点点滴滴的记录,是从Coursera网课、各大博客、论文的学习以及自己的实践中总结而来。从基本的概念、原理、公式,到用生动形象的例子去理解,到动手做实验去感知,到著名案例的学习,到用所学来实现自己的小而有趣的想法......我相信,一路看下来,我们可以感受到深度学习的无穷的乐趣,并有兴趣和激情继续钻研学习。 正所谓 Learning by teaching,写下一篇篇笔记的同时,我也收获了更多深刻的体会,希望大家可以和我一同进步,共同享受AI无穷的乐趣。
beyondGuo
2018/10/25
8440
【DL笔记9】搭建CNN哪家强?TensorFlow,Keras谁在行?
机器学习入门之HelloWorld(Tensorflow)
1 环境搭建 (Windows) 安装虚拟环境 Anaconda,方便python包管理和环境隔离。 Anaconda3 4.2 http://mirrors.oa.com/anaconda/archive/Anaconda3-4.2.0-Windows-x86_64.exe,自带python 3.5。 创建tensorflow隔离环境。打开Anaconda安装后的终端Anaconda Prompt,执行下面命令 conda create -n tensorflow python=3.5 #创建名为ten
腾讯Bugly
2018/04/27
1.2K0
机器学习入门之HelloWorld(Tensorflow)
推荐阅读
相关推荐
TensorFlow 深度学习笔记 卷积神经网络
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文