手写数字识别 CNN MNIST_data LeNet

2024-05-27 00:18

本文主要是介绍手写数字识别 CNN MNIST_data LeNet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MNIST_data数据集下载

链接:https://pan.baidu.com/s/1wble_t39TR4uAgTFZjnSnQ 
提取码:5wxq 

一、CNN识别手写数字

# coding = utf-8
# 2019/7/22  Luckyxxt:有趣的事,Python永远不会缺席!import tensorflow as tf
import time
import tensorflow.examples.tutorials.mnist.input_data as input_data
old_v = tf.logging.get_verbosity()
tf.logging.set_verbosity(tf.logging.ERROR)
t1 = time.time()
mnist_data_folder = './MNIST_data'
mnist = input_data.read_data_sets(mnist_data_folder, one_hot=True)
tf.logging.set_verbosity(old_v)
print('mnist.train.images.shape', mnist.train.images.shape)
print('mnist.train.labels', mnist.train.labels.shape)
print('mnist.test.images.shape', mnist.test.images.shape)
print('mnist.test.labels.shape', mnist.test.labels.shape)
'''
1、训练数据 55000训练样本 784 为28 * 28 的像素值 mnist.train.images.shape (55000, 784)
2、训练数据label 10个种类 minist.train.labels (55000, 10)
3、测试数据 10000 minist.test.images.shape (10000, 784)
4、测试数据label 10个种类minist.test.labeld.shape (10000, 10)
'''
# 下面先构建数据流图 最后在会话里面启动
'''
#placeholder()函数是在神经网络构建graph的时候在模型中的占位,
#此时并没有把要输入的数据传入模型,它只会分配必要的内存。
#等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符传入数据
#这里建立了两个占位
'''image_place = tf.placeholder(tf.float32, shape=([None, 784]))
label_place = tf.placeholder(tf.float32, shape=([None, 10]))'''
#我们需要创建大量的权重和偏置量
#所以我们定义了两个函数
#权重应用少量的噪声来打破对称性以及避免0梯度
#用一个较小的正数来初始化偏置项
'''def weight_variable(shape):# tf.truncated_normal从截断的正态分布中输出随机值。# shape表示生成张量的维度,stddev是标准差,均值默认为0initial = tf.truncated_normal(shape, stddev=0.1)# 定义一个图变量,用于在会话中启动return tf.Variable(initial)def bias_variable(shape):# 创建一个常数张量,shape代表张量的维度initial = tf.constant(0.1, shape=shape)# 定义一个图变量,用于在会话中启动return tf.Variable(initial)'''
tf.nn.conv2d (  input/输入图片,filter/滤镜,strides/步幅,padding/是否填充,use_cudnn_on_gpu=None,是否使用cudnn加速,默认为truedata_format=None,name=None)
input是要进行卷积的图片,形状为[ batch, in_height, in_weight, in_channel ]
batch为图片的数量,in_height 为图片高度,in_weight 为图片宽度,in_channel 为图片的通道数(彩色为3,黑白为1)filter/滤镜 也是一个张量,形状为为 [ filter_height, filter_weight, in_channel, out_channels ]
filter_height 为卷积核高度,filter_weight 为卷积核宽度,
in_channel 是图像通道数 ,和 input 的 in_channel 要保持一致,out_channel 是卷积核数量。strides/ 步幅  卷积时在图像每一维的步长,这是一个一维的向量,
[ 1, strides, strides, 1],第一位和最后一位固定必须是1padding/是否填充 "SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑
'''
# 定义一个构建卷积层的函数def conv2d(x, W):return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')'''
tf.nn.max_pool(value, ksize, strides, padding, name=None)value 卷积层的输入  [batch, height, width, channels]
ksize 池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],不在batch和channels上做池化
strides/ 步幅  卷积时在图像每一维的步长,这是一个一维的向量,
[ 1, strides, strides, 1],第一位和最后一位固定必须是1
padding/是否填充 "SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑
'''# 定义一个构建最大池化层的函数def max_pool(x):return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')'''
构建第一层的滤镜矩阵W和偏置量B
表示卷积核的大小为5×5,输入为1,输出为32,即共有32个卷积核(滤镜)
偏置量的值为0.1,因为有32个滤镜 所以有32个偏置量
'''W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])print('W_conv1', W_conv1)
# W_conv1 <tf.Variable 'Variable:0' shape=(5, 5, 1, 32) dtype=float32_ref>
print('b_conv1', b_conv1)
# b_conv1 <tf.Variable 'Variable_1:0' shape=(32,) dtype=float32_ref>
# 改变X的形状࿰

这篇关于手写数字识别 CNN MNIST_data LeNet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005995

相关文章

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

HTML5 data-*自定义数据属性的示例代码

《HTML5data-*自定义数据属性的示例代码》HTML5的自定义数据属性(data-*)提供了一种标准化的方法在HTML元素上存储额外信息,可以通过JavaScript访问、修改和在CSS中使用... 目录引言基本概念使用自定义数据属性1. 在 html 中定义2. 通过 JavaScript 访问3.

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统