Tensorflow实战-CNN网络Mnist识别

最详细的tensorflow基于CNN(卷积神经网络)实战mnist手写识别(小白必看,包含各种基础知识讲解) 很荣幸您能看到这篇文章,相信通过标题打开这篇文章的都是对tensorflow感兴趣的,特别是对卷积神经网络在mnist手写识别这个实例感兴趣。不管你是什么基础,我相信,你在看完这篇文章后,都能够完全理解这个实例。这对于神经网络入门的小白来说,简直是再好不过了 阅读详情

这篇笔记是在阅读Tensorflow中文文档时做的笔记,只记录了一些我认为需要记录的地方,其他问题大家可以评论,我们共同探讨。

1、权重初始化
这个模型中的权重在初始化时应该加入少量的噪声来打 破对称性以及避免0梯度。破对称性以及避免0梯度。由于我们使用的是ReLU神经元,因此比较好的做法是用一个较小的正数来初始化偏置 项,以避免神经元节点输出恒为0的问题(dead neurons)。

#w采用截断的正态分布,标准差为0.1
def weight_variable(shape): 
	initial = tf.truncated_normal(shape, stddev=0.1) 
	return tf.Variable(initial)
#b为0.1
def bias_variable(shape): 
	initial = tf.constant(0.1, shape=shape) 
	return tf.Variable(initial)
2、每一层的实现
2.1、卷积层+池化层
每一层包括卷积层、池化层、dropout层等等,视具体情况而定。
举例:卷积+池化+全连接+softmax

W_conv1 = weight_variable([5, 5, 1, 32]) 
b_conv1 = bias_variable([32])

[5,5,1,32]:表示卷积核的大小为5*5,深度为1,数量为32个,即第一层输出为32个feature map。
[32]:对应b值也是32个。

为了输入的图片能和这些参数进行运算,也需要对输入进行reshape。

x_image = tf.reshape(x, [-1,28,28,1])
[-1,28,28,1]:第一个-1不用管,只是赋一下初值,紧接着是表示图片的大小为28*28(height*width),最后表示输入图片的深度。
此时,输入图片和卷积核都准备好了,接下来就是进行卷积计算。

def conv2d(x, W): 
	return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
def max_pool_2x2(x): 
	return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')

这一句实际调用tensorflow的conv2d函数,输入数据和卷积核,和普通的神经网络中matmul函数作用一样,加上偏置,然后进入激活函数。
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)

对上一步的输出进行poolling操作:
h_pool1 = max_pool_2x2(h_conv1)

第二层:依然是卷积层+池化层

W_conv2 = weight_variable([5, 5, 32, 64]) 
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2) 
h_pool2 = max_pool_2x2(h_conv2)

2.2、全连接层
经过两次卷积池化,图片尺寸变为:28*28-》32张14*14-》64张7*7,引起尺寸变化的均为池化过程,因为在卷积过程中padding属性为SAME,即保持卷积前后图像尺寸不变。
此时我们引入一个1024个神经元的全连接层:
既该层要连接7*7*64个元素,则需要初始化参数为:

W_fc1 = weight_variable([7 * 7 * 64, 1024]) 
b_fc1 = bias_variable([1024])

这里注意一下,上一个池化层输出的数据需要reshape

h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64]) 

接下来就是进行计算
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)

2.3、Dropout层
为了减少模型过拟合,我们在训练过程中开启dropout,测试过程中关闭,声明一个placeholder来控制dropout的程度。
注:TensorFlow的 tf.n n.dropout 操作除了可以屏蔽神经元的输出外,还会自动处理神经元输出值的scale。所以用dropout的时候可以不 用考虑scale。
keep_prob = tf.placeholder("float") 

上一层(全连接层),进入dropout层
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)

2.4、输出层,softmax

W_fc2 = weight_variable([1024, 10]) 
b_fc2 = bias_variable([10]) 
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
心得:其实只要把深度学习的原理搞懂,框架不同,只需熟悉一下各个框架下函数即可,上手很快。
TensorFlow2.0 卷积神经网络MNIST实战 使用 **TensorFlow 2.0** 框架搭建卷积神经网络,进行手写字的识别。 阅读详情

相关推荐

深度学习(Tensorflow)之卷积神经网络(CNN)--mnist数据库

1、MNIST数据库特点 MNIST手写数字数据库具有60,000个示例的训练集和10,000个示例的测试集。它是NIST提供的更大集合的子集。数字已经过尺寸标准化,并以固定尺寸的图像为中心。 对于想要在真实数据上尝试学习技术和模式识别方法,同时在预处理和格式化方面花费最少的人来说,它是一个很好的数据库。 MNIST 数据集包含了四个部分: train-images-idx3-ubyte:trai...

_XCX的博客 1110

4-CNN-demo-0302-权重初始化

import tensorflow as tf import helper import numpy as np import matplotlib as mpl from tensorflow.examples.tutorials.mnist import input_data # 设置字符集,防止中文乱码 mpl.rcParams['font.sans-serif'] = [u'simHe...

HJZ11的博客 641

《Python星球日记》 第53天:卷积神经网络(CNN)入门

欢迎来到Python星球的第53天!🪐,今天我们将探索深度学习中最重要的架构之一——卷积神经网络(CNN)。CNN在计算机视觉领域取得了革命性的突破,让机器能够"看懂"图像。

Code_流苏:在代码中寻诗意,在实践中觅真知 1048

深度学习——权重的初始值

sigmoid、tanh、ReLU激活函数的权重初始值

m0_46462695的博客 1951

基于TensorFlow的手写字体识别项目实战(Python实现)

TensorFlow 是由 Google 开发的开源深度学习框架,基于数据流图(Data Flow Graph)的计算模型,广泛应用于图像识别、自然语言处理、语音识别等领域。其核心架构包含两个重要组件:计算图(Graph):描述数据运算的流程,节点表示操作(Operation),边表示张量(Tensor)。会话(Session):用于执行图中的操作,分配资源并管理变量生命周期。

weixin_42579969的博客 1185

SAP ABAP干货:用REUSE_ALV_GRID_DISPLAY_LVC实现ALV多屏幕独立布局(含handle参数详解)

本文详细解析了SAP ABAP中如何使用REUSE_ALV_GRID_DISPLAY_LVC函数实现ALV多屏幕独立布局,重点介绍了handle参数的技术原理和实际应用。通过变式标识符和LTDX表存储机制,开发者可以确保不同ALV报表屏幕的布局设置互不干扰,提升复杂报表场景下的用户体验。

weixin_29268267的博客 311

深度的卷积神经网络CNN(MNIST数据集示例)

深度CNN的结构:输入图片-->Conv-->ReLU-->Conv-->ReLU-->Pool-->Conv-->ReLU-->Conv-->ReLU-->Pool-->Conv-->ReLU-->Conv-->ReLU-->Pool-->Affine-->ReLU-->Dropout-->Affine-->Dropout-->Softmax-->分类输出

深度学习领域优质创作者,优快云博客专家 2245

信息学奥赛一本通高手训练1680:序列

题目 代码 #include<cstdio> #include<iostream> #include<cmath> #define LL long long using namespace std; const LL N = 1400000+7; const LL mod = 1e9+7; int n, t; LL pos[N], sum[N], ans[N]; struct node{ LL ll, rr; }a[N]; int main(){ p

qingfeixueyue的博客 468

TensorFlow学习实战(一):通过CNN实现Mnist

本次通过CNN来实现Mnist,我给每一部分的代码加上了详细的注释。下面直接上程序: import tensorflow as tf import numpy as np from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data', one_...

IMUDGES_YangHan的博客 781

安装keil软件时安装不了芯片包怎么回事?芯片包安装路径放在Keill里的packs下面,弹框提示报错:Errors retumned from cpackget...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2207

[cshell]个性化配置你的cshrc/tcshrc

本文介绍了csh/tcsh shell的配置优化方法,主要包括:1. 配置文件管理(全局和个人配置);2. 按键绑定设置(解决远程登录按键问题);3. 提示符个性化(包含颜色配置方案);4. 环境变量设置(如LSCOLORS、CLICOLOR等);5. 安全防护措施(防误删、防覆盖等);6. 实用alias命令集(简化操作、提高效率)。文章提供了详细的配置示例,并建议通过man tcsh获取更多帮助信息。这些配置能显著提升shell使用体验和工作效率。

元直的博客 6114

tensorflow学习笔记(七):CNN手写体(MNIST)识别

本文简单的介绍了CNN,然后介绍了CNN中常用到的函数,然后搭建了CNN对MNIST数据集进行了预测。

ch18328071580的博客 1771

一文搞定 ST22 短转储 MEMORY_NO_MORE_PAGING:看懂 SAP Paging 机制,参数 rdisp/PG_SHM 与 rdisp/PG_MAXFS 怎么设才稳

SAP系统MEMORY_NO_MORE_PAGING错误通常源于Paging资源耗尽而非物理内存不足。关键排查点包括:通过ST22确认错误类型,ST02监控Paging使用情况,检查工作进程trace中的"no more free blocks"提示。解决方案建议将rdisp/PG_SHM和rdisp/PG_MAXFS设为相同值(如250000块≈2GB),使Paging完全在内存中运行。同时需优化易耗Paging的代码逻辑,如避免滥用EXTRACT命令和超大内存对象传输。典型案例如月末

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 335

利用Tensorflow2搭建CNN网络(Tensorflow2入门)

1. 前言: 自从Google发布了TensorFlow2.0后,个人觉得与TensorFlow1相比是一个重大的突破,它不仅仅删除了许多旧的库并进行整合,还促进了Keras在搭建模型中的使用,通过高级API Keras让模型构建和部署变得简单。 我们在用TensorFlow2.0创建模型时,可以使用Keras函数API定义模型或者顺序API定义模型。本文将使用Keras函数API来定义CNN模型,并将介绍TF2.0的新功能@tf.function来修饰高级计算。 2. CNN网络的简单介绍 卷积神经网络(

guowei_huai的博客 2767

SAP自动化-ME51N批量创建采购申请

2、需要管理员授权RZ11脚本录制回放功能。1、仅限于正对SAP日常工作的批量处理。3、数据模板按实际需求更新。物料编码,工厂,数量。

小九啥也不会 530

【ComfyUI】Flux 图像扩展

本文介绍了一个基于Flux扩图技术的ComfyUI工作流,能够智能扩展图像尺寸并保持内容连贯性。该流程通过扩散模型与条件编码的结合,对图像边缘进行语义填充生成,适用于艺术创作、海报设计等场景。工作流包含图像加载、外扩填充、文本编码、扩散采样等核心节点,采用Flux1-fill-dev等专业模型确保生成质量。演示效果显示,系统能自然延伸原图内容,保持风格统一。该技术可广泛应用于插画扩展、摄影增强、游戏场景构建等领域,显著提升创意工作效率。

Mr数据杨 929

tensorflow基于cnn的实战mnist手写识别(浅层网络搭建)

手写数字识别mnist这个实例相当于c中的helloworld,对于刚入门cnn的同学来说可以借鉴一下,本人也是刚入门的小白,不对之处欢迎大家指正。 Tensorflow实战mnist手写数字识别 关于mnist数据集这里不多做介绍了,大家自己百度吧~~ 使用tensorflow框架,导入相关包 import os # 执行文件与文件夹 import numpy as np # 导入numpy,同时给numpy一个别名np import tensorflow as tf # 导入tensor

panghuzhenbang的博客 1830

全志A527 T527 android13支持usb摄像头

我们发现usb摄像头在A527 android13上面并不能正常使用,需要支持相关的摄像头。

zhutoubenben的专栏 964

【DL笔记】卷积神经网络简介

卷积神经网络简介

roguesir的博客 3632

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

深度学习笔记:Tensorflow手写mnist数字识别

文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路   上一讲笔者和大家一起学习了如何使用 Tensorflow 构建一个卷积神经网络模型。本节我们将继续利用 Tensorflow 的便捷性完成 mnist 手写数字数据集的识别实战。mnist 数据集是 Yann Lecun 大佬基于美...

hellozhxy的博客 1902

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

第T1周:实现mnist手写数字识别

- **🍨 本文为[]中的学习记录博客**>- **🍖 原作者:[]**

weixin_43414521的博客 1014

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从代码学AI——卷积神经网络(CNN)

今天和大家一起来看下基于TensorFlow实现CNN的代码示例,源码参见Convolutional_netWork。使用MNIST数据集进行训练和预测,下面开始代码注解。 ''' 这里从源码的角度详细说明使用TensorFlow如何简单的实现卷积神经网络 使用MNIST数据集进行卷积神经网络的实现 使用MNIST数据集 数据集参见:http://yann.lecun.com/exdb/

mmp591的博客 1503

TensorFlow 2.0 / TF2.0 强化学习入门教程实战案例

目录一、实战教程之强化学习二、实战教程之图像识别三、Github 源码地址 一、实战教程之强化学习 TensorFlow 2.0 (八) - 强化学习 DQN 玩转 gym Mountain Car TensorFlow 2.0 (七) - 强化学习 Q-Learning 玩转 OpenAI gym TensorFlow 2.0 (六) - 监督学习玩转 OpenAI gym game 二、...

u014138650的专栏 4600

TensorFlow之CNN卷积神经网络的实现

下载MNIST数据集(28*28,输入维度为784) import tensorflow as tf #下载MNIST数据集(28*28,输入维度为784) from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data', one_hot=Tr...

黄鑫的博客 496

Tensorflow-101卷积神经网络CNN完全教程:图像识别与分类实战

想要快速掌握TensorFlow卷积神经网络(CNN)吗?Tensorflow-101项目提供了完整的CNN实战教程,帮助初学者轻松入门图像识别与分类。本教程覆盖从基础概念到实战应用的完整流程,通过MNIST手写数字识别和自定义数据集分类等实例,让你快速掌握CNN的核心技术和应用方法。😊 ## 为什么选择Tensorflow-101学习卷积神经网络? Tensorflow-101是一个专为T

gitblog_00944的博客 1060

深度学习笔记13:Tensorflow实战之手写mnist手写数字识别

上一讲笔者和大家一起学习了如何使用 Tensorflow 构建一个卷积神经网络模型。本节我们将继续利用 Tensorflow 的便捷性完成 mnist 手写数...

weixin_37737254的博客 336
上一篇: windows10—Tensorboard命令行命令没有反应
下一篇: python中matplotlib画图中文不能显示
HelloHaibo
博客等级 码龄10年 50粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值