【TensorFlow-CNN】LeNet5神经网络简介附TensorFlow源代码实现

本文介绍了一个基于LeNet模型的TensorFlow实现案例,该模型在MNIST数据集上达到了98%的准确率。文章详细解释了模型结构,并提供了两种版本的基础代码实现,适合初学者学习卷积神经网络。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前沿
本文代码是我在学习TensorFlow时写的第一个代码,主要是根据LeNet模型编写,但是自距此模型问世以来,深度学习领域发生了很大变化,所以其中某些方法和参数已经有所改变,目前此模型通过在GPU上训练,精确度可以达到98%左右,下面我将详细介绍Tensorflow中的实现,本教程适合TensorFlow的初学者,主要有以下特点:
  • 使用Mnist数据集
  • 测试精度可达98%
  • 可视化输出
  • 兼具卷积层、pooling(池化)层、dropout层、全连接层、softmax layer
  • 提供两个实现此模型原始代码
代码实现:
这个仓库中有两个文件,基础版本(v1.0) 和 提高版本(v2.0)
  • python LeNet_mnist_v1.0.py
  • 基础版本,使用tf.nn.***函数实现,注重构造网络中的细节实现,容易理解CNN的运行原理,从细节理解CNN结构。
  • python LeNet_mnist_v2.0.py
  • 提高版本,使用tf.layer.***函数实现,使用tf框架提供的集成函数,特点是构造方便,宏观上更好理解,但是没有展现细节。
二、模型结构

三、代码实现简介
(1)定义的超参数:dropout层的保留概率/每次提取图片数目/迭代次数
train_keep_prop = 0.5/batch_size = 100/epcoh = 1000
可以更改这些参数,以改善训练结果。
(2)模型结构
input - 输入数据:Mnist
数据集被分成两部分:60000 行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test),每张图片是 28*28*1,经过reshape后,维度格式为:[28,28,1]
conv1 - 卷积层:
卷积层:kenel:5*5*32,strides = 1,padding = SAME -->> [28,28,32]
池化层:ksize: 2*2 ,strides = 2 -->> [14,14,32]
drop层:keep_prop = train_keep_prop -->> [14,14,32]
conv2 - 卷积层:
卷积层:kenel:5*5*64,strides = 1,padding = SAME -->> [14,14,64]
池化层:ksize: 2*2 ,strides = 2 -->> [7,7,64]
drop层:keep_prop = train_keep_prop -->> [7,7,64]
Flaten层:
将[7,7,64]矩阵形式 -->> [7*7*64]向量形式
Fucn1 - 全连接层:
权重:[7*7*64,1024]
Fucn2 - 全连接层:
权重:[1024,10]
Softmax层:
输出one-hot向量,对应每一类的概率。
四、代码实现
这个仓库中有两个文件,基础版本(v1.0) 和 提高版本(v2.0)
  • python LeNet_mnist_v1.0.py
基础版本,使用tf.nn.***函数实现,注重构造网络中的细节实现,容易理解CNN的运行原理,从细节理解CNN结构。
  • python LeNet_mnist_v2.0.py
提高版本,使用tf.layer.***函数实现,使用tf框架提供的集成函数,特点是构造方便,宏观上更好理解,但是没有展现细节。
五、执行程序
执行命令: python LeNet_mnist_v1.0.py
执行命令:python LeNet_mnist_v2.0.py
六、训练结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值