TensorFlow从入门到放弃(一)——实现经典神经网络模型LeNet5

本文介绍了如何使用TensorFlow实现经典的LeNet5神经网络模型,用于识别mnist手写数字数据集。详细解析了LeNet5的网络结构,包括卷积层、池化层和全连接层,并提供了相关代码实现,包括mnist_inference.py、mnist_train.py和mnist_eval.py的概述。文章还分享了作者初学TensorFlow的心得体会。
摘要由CSDN通过智能技术生成

1.mnist手写数字数据集

下载地址:http://yann.lecun.com/exdb/mnist/

 

2. LeNet5网络模型

 

        第一层:卷积层

        这一层的输入就是原始的图像像素32*32*1。第一个卷积层过滤器尺寸为5*5,深度为6,偏置亦为6,不使用全0填充,长和宽的步长为1。所以这一层的输出:28*28*6,卷积层共有5*5*1*6+6=156个参数。

         第二层:池化层

        这一层的输入为第一层的输出,是一个28*28*6的节点矩阵。本层采用的过滤器大小为2*2,长和宽的步长均为2,所以本层的输出矩阵大小为14*14*6。

         第三层:卷积层

        本层的输入矩阵大小为14*14*6,使用的过滤器大小为5*5,深度为16,偏置为16。本层不使用全0填充,长和宽的步长为1。本层的输出矩阵大小为10*10*16。本层有5*5*6*16+16=2416个参数。

         第四层:池化层

        本层的输入矩阵大小10*10*16。本层采用的过滤器大小为2*2,长和宽的步长均为2,所以本层的输出矩阵大小为5*5*16。

         第五层:全连接层

        本层的输入矩阵大小为5*5*16,在LeNet-5论文中将这一层称为卷积层,但是因为过滤器的大小就是5*5,所以和全连接层没有区别。如果将5*5*16矩阵中的节点拉成一个向量,那么这一层和全连接层就一样了。本层的输出节点个数为120,总共有5*5*16*120+120=48120个参数。

        第六层:全连接层

        本层的输入节点个数为120个,输出节点个数为84个,偏置亦为84,总共参数为120*84+84=10164个。

        第七层:全连接层

        本层的输入节点个数为84个,输出节点个数为10个,偏置亦为10,总共参数为84*10+10=850。

3.使用TensorFlow实现LeNet5神经网络

3.1 初学TensorFlow的个人理解:

        一个完整的TensorFlow实现的网络模型需要包换三个文件:

  1. Inference.py,这个文件定义了网络的前向传播过程以及神经网络中的参数初始化。
  2. train.py,这个文件定义了神经网络的训练过程。文件中包含了损失函数的定义、学习率的定义、滑动平均操作以及训练过程、以及将训练得到的model的存储。
  3. eval.py,这个文件定义了测试过程。用训练得到的model重现网络。

3.2 mnist_inference.py中的常用函数:

  函数一

      

    

    name:名称

    shape:数据的维度

    tf.constant_initializer(0.0):初始化全为0的常量

    tf.truncated_normal_initializer(stddev=0.1)):初始化产生一个正态分布的初始值,标准差为0.1。

  函数二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值